Changeset 3751226
- Timestamp:
- 10/16/2026 10:50:09 PM (3 hours ago)
- Location:
- mjcdesigns-ai-design-assistant-bricks/trunk
- Files:
-
- 4 edited
-
assets/admin.css (modified) (14 diffs)
-
assets/app.js (modified) (6 diffs)
-
mjcdesigns-ai-design-assistant-bricks.php (modified) (3 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
mjcdesigns-ai-design-assistant-bricks/trunk/assets/admin.css
r3748329 r3751226 464 464 line-height:1.5; 465 465 word-break:break-word 466 }467 .mjcdesigns-ai-apply-row {468 border-top:1px solid #2b2a31;469 padding:11px;470 display:flex;471 justify-content:flex-end;472 margin-top:auto473 466 } 474 467 .mjcdesigns-ai-apply { … … 908 901 font-weight:600 909 902 } 910 .mjcdesigns-ai-about-card--brand {911 background:linear-gradient(145deg,#17151d,#292237);912 border-color:#383047;913 color:#f7f5fa914 }915 .mjcdesigns-ai-about-card--brand h2 {916 color:white917 }918 .mjcdesigns-ai-about-card--brand h2 .dashicons {919 background:#5f41b0;920 color:white921 }922 .mjcdesigns-ai-about-card--brand>p {923 color:#d6d2df924 }925 903 .mjcdesigns-ai-about-facts { 926 904 display:grid; … … 950 928 color:white; 951 929 font-size:11px 952 }953 .mjcdesigns-ai-about-color {954 display:inline-block;955 width:12px;956 height:12px;957 vertical-align:-2px;958 margin-right:5px;959 border-radius:50%;960 background:#5f41b0;961 box-shadow:0 0 0 2px #ffffff2b962 930 } 963 931 .mjcdesigns-ai-about-steps { … … 1214 1182 line-height:1.6 1215 1183 } 1216 .mjcdesigns-ai-terms-card {1217 background:#18181d1218 }1219 1184 .mjcdesigns-ai-terms-grid .mjcdesigns-ai-about-card p:last-child { 1220 1185 margin-bottom:0 … … 1914 1879 color:#d6d2df 1915 1880 } 1916 /* F ull-width MJC Designs AI admin pages, with shared gutters and matching Settings styling. */1881 /* Final overrides: full-width subpages, edge-to-edge content area, compact banner icons. */ 1917 1882 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpcontent { 1918 1883 padding-left:0; … … 1988 1953 grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr) 1989 1954 } 1990 .mjcdesigns-ai-settings- card h2,.mjcdesigns-ai-settings-grid .mjcdesigns-ai-about-card h2 {1955 .mjcdesigns-ai-settings-grid .mjcdesigns-ai-about-card h2 { 1991 1956 margin-bottom:12px 1992 1957 } 1993 .mjcdesigns-ai-settings-key-state { 1994 display:flex; 1995 align-items:center; 1996 gap:9px; 1997 margin:18px 0 20px; 1998 padding:12px 14px; 1999 border:1px solid #393541; 2000 border-radius:8px; 2001 background:#211f26; 2002 color:#eeebf3; 2003 font-size:12px 2004 } 2005 .mjcdesigns-ai-settings-state-dot { 2006 width:9px; 2007 height:9px; 2008 flex:none; 2009 border-radius:50%; 2010 background:#8d8994; 2011 box-shadow:0 0 0 4px #ffffff0b 2012 } 2013 .mjcdesigns-ai-settings-state-dot.is-saved { 2014 background:#55c589; 2015 box-shadow:0 0 0 4px #55c58920 2016 } 2017 .mjcdesigns-ai-settings-key-form>label { 2018 display:block; 2019 margin:0 0 7px; 2020 color:#d8d4df; 2021 font-size:11px; 2022 font-weight:650 2023 } 2024 .mjcdesigns-ai-settings-key-entry { 2025 display:flex; 2026 align-items:stretch; 2027 gap:9px 2028 } 2029 .mjcdesigns-ai-settings-key-entry input { 2030 box-sizing:border-box; 2031 flex:1; 2032 min-width:0; 2033 min-height:40px; 2034 padding:8px 11px; 2035 border:1px solid #494550; 2036 border-radius:7px; 2037 background:#111115; 2038 color:#f6f5f8 2039 } 2040 .mjcdesigns-ai-settings-key-entry input:focus { 2041 border-color:#8a70d0; 2042 box-shadow:0 0 0 1px #5f41b0; 2043 outline:none 2044 } 2045 .mjcdesigns-ai-settings-key-entry .button-primary { 2046 min-height:40px; 2047 padding:0 16px; 2048 border-color:#765bc0; 2049 border-radius:7px; 2050 background:#5f41b0; 2051 box-shadow:none; 2052 color:#fff; 2053 font-size:11px 2054 } 2055 .mjcdesigns-ai-settings-key-form .description,.mjcdesigns-ai-settings-grid .description { 1958 .mjcdesigns-ai-settings-grid .description { 2056 1959 margin:9px 0 0; 2057 1960 color:#a7a3ae; … … 2059 1962 line-height:1.55 2060 1963 } 2061 .mjcdesigns-ai-settings-clear-form { 2062 margin-top:13px; 2063 padding-top:13px; 2064 border-top:1px solid #302e36 2065 } 2066 .mjcdesigns-ai-settings-clear-form .button { 2067 min-height:34px; 2068 border-color:#494550; 2069 border-radius:6px; 2070 background:#26242b; 2071 color:#dedbe4 2072 } 2073 .mjcdesigns-ai-settings-model { 2074 margin:20px 0 0; 2075 padding-top:14px; 2076 border-top:1px solid #302e36; 2077 color:#a8a4af; 2078 font-size:11px 2079 } 2080 .mjcdesigns-ai-settings-model code { 2081 display:inline-block; 2082 padding:3px 6px; 2083 border-radius:5px; 2084 background:#2a2435; 2085 color:#dcd1fc 2086 } 2087 .mjcdesigns-ai-settings-model a,.mjcdesigns-ai-settings-policy-link { 1964 .mjcdesigns-ai-settings-policy-link { 2088 1965 color:#c8b7fa; 2089 1966 text-decoration:none; 2090 1967 font-weight:650 2091 1968 } 2092 .mjcdesigns-ai-settings- model a:hover,.mjcdesigns-ai-settings-policy-link:hover {1969 .mjcdesigns-ai-settings-policy-link:hover { 2093 1970 text-decoration:underline; 2094 1971 color:#fff … … 2139 2016 .mjcdesigns-ai-about-grid,.mjcdesigns-ai-terms-grid,.mjcdesigns-ai-settings-grid { 2140 2017 grid-template-columns:minmax(0,1fr) 2141 }2142 .mjcdesigns-ai-settings-key-entry {2143 flex-direction:column2144 }2145 .mjcdesigns-ai-settings-key-entry .button-primary {2146 align-self:flex-start2147 }2148 .mjcdesigns-ai-about-card {2149 height:auto2150 }2151 }2152 /* Final overrides: full-width subpages, edge-to-edge content area, compact banner icons. */2153 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpcontent {2154 padding-left:0;2155 background:#101013;2156 color:#f6f5f82157 }2158 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpbody-content {2159 padding-bottom:0;2160 background:#1010132161 }2162 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpfooter {2163 background:#101013;2164 color:#96929e2165 }2166 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpbody-content>.wrap {2167 box-sizing:border-box;2168 width:100%;2169 max-width:none;2170 margin:0;2171 padding:18px 26px 34px2172 }2173 body[class*="mjcdesigns-ai-design-assistant-bricks"] .notice {2174 margin:0 0 15px2175 }2176 .mjcdesigns-ai-about-wrap {2177 box-sizing:border-box;2178 width:100%;2179 max-width:none;2180 min-height:calc(100vh - 80px);2181 margin:0;2182 padding:18px 26px 34px;2183 background:#101013;2184 color:#f6f5f82185 }2186 .mjcdesigns-ai-about-heading,.mjcdesigns-ai-about-grid,.mjcdesigns-ai-terms-grid,.mjcdesigns-ai-terms-notice,.mjcdesigns-ai-about-footer {2187 box-sizing:border-box;2188 width:100%;2189 max-width:none2190 }2191 .mjcdesigns-ai-about-heading {2192 margin:4px 0 20px;2193 padding:28px 30px2194 }2195 .mjcdesigns-ai-about-heading>.dashicons {2196 box-sizing:border-box;2197 display:grid;2198 place-items:center;2199 flex:none;2200 width:36px;2201 height:36px;2202 padding:6px;2203 font-size:22px;2204 line-height:12205 }2206 .mjcdesigns-ai-about-grid,.mjcdesigns-ai-terms-grid {2207 margin:0;2208 align-items:stretch2209 }2210 .mjcdesigns-ai-about-card {2211 height:100%;2212 box-sizing:border-box2213 }2214 .mjcdesigns-ai-about-footer {2215 margin:18px 0 02216 }2217 .mjcdesigns-ai-terms-notice {2218 margin:0 0 15px2219 }2220 .mjcdesigns-ai-settings-wrap {2221 padding-top:18px2222 }2223 .mjcdesigns-ai-settings-grid {2224 grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr)2225 }2226 .mjcdesigns-ai-settings-grid .mjcdesigns-ai-about-card h2 {2227 margin-bottom:12px2228 }2229 .mjcdesigns-ai-settings-key-state {2230 display:flex;2231 align-items:center;2232 gap:9px;2233 margin:18px 0 20px;2234 padding:12px 14px;2235 border:1px solid #393541;2236 border-radius:8px;2237 background:#211f26;2238 color:#eeebf3;2239 font-size:12px2240 }2241 .mjcdesigns-ai-settings-state-dot {2242 width:9px;2243 height:9px;2244 flex:none;2245 border-radius:50%;2246 background:#8d8994;2247 box-shadow:0 0 0 4px #ffffff0b2248 }2249 .mjcdesigns-ai-settings-state-dot.is-saved {2250 background:#55c589;2251 box-shadow:0 0 0 4px #55c589202252 }2253 .mjcdesigns-ai-settings-key-form>label {2254 display:block;2255 margin:0 0 7px;2256 color:#d8d4df;2257 font-size:11px;2258 font-weight:6502259 }2260 .mjcdesigns-ai-settings-key-entry {2261 display:flex;2262 align-items:stretch;2263 gap:9px2264 }2265 .mjcdesigns-ai-settings-key-entry input {2266 box-sizing:border-box;2267 flex:1;2268 min-width:0;2269 min-height:40px;2270 padding:8px 11px;2271 border:1px solid #494550;2272 border-radius:7px;2273 background:#111115;2274 color:#f6f5f82275 }2276 .mjcdesigns-ai-settings-key-entry input:focus {2277 border-color:#8a70d0;2278 box-shadow:0 0 0 1px #5f41b0;2279 outline:none2280 }2281 .mjcdesigns-ai-settings-key-entry .button-primary {2282 min-height:40px;2283 padding:0 16px;2284 border-color:#765bc0;2285 border-radius:7px;2286 background:#5f41b0;2287 box-shadow:none;2288 color:#fff;2289 font-size:11px2290 }2291 .mjcdesigns-ai-settings-key-form .description,.mjcdesigns-ai-settings-grid .description {2292 margin:9px 0 0;2293 color:#a7a3ae;2294 font-size:11px;2295 line-height:1.552296 }2297 .mjcdesigns-ai-settings-clear-form {2298 margin-top:13px;2299 padding-top:13px;2300 border-top:1px solid #302e362301 }2302 .mjcdesigns-ai-settings-clear-form .button {2303 min-height:34px;2304 border-color:#494550;2305 border-radius:6px;2306 background:#26242b;2307 color:#dedbe42308 }2309 .mjcdesigns-ai-settings-model {2310 margin:20px 0 0;2311 padding-top:14px;2312 border-top:1px solid #302e36;2313 color:#a8a4af;2314 font-size:11px2315 }2316 .mjcdesigns-ai-settings-model code {2317 display:inline-block;2318 padding:3px 6px;2319 border-radius:5px;2320 background:#2a2435;2321 color:#dcd1fc2322 }2323 .mjcdesigns-ai-settings-model a,.mjcdesigns-ai-settings-policy-link {2324 color:#c8b7fa;2325 text-decoration:none;2326 font-weight:6502327 }2328 .mjcdesigns-ai-settings-model a:hover,.mjcdesigns-ai-settings-policy-link:hover {2329 text-decoration:underline;2330 color:#fff2331 }2332 .mjcdesigns-ai-settings-policy-link {2333 display:inline-block;2334 margin:4px 0 10px;2335 padding:9px 11px;2336 border:1px solid #56456f;2337 border-radius:7px;2338 background:#2821312339 }2340 .mjcdesigns-ai-settings-data-card {2341 background:linear-gradient(145deg,#17151d,#292237);2342 border-color:#3830472343 }2344 .mjcdesigns-ai-settings-data-card h2 {2345 color:#fff2346 }2347 .mjcdesigns-ai-settings-data-card h2 .dashicons {2348 background:#5f41b0;2349 color:#fff2350 }2351 .mjcdesigns-ai-settings-data-card p {2352 color:#d6d2df2353 }2354 .mjcdesigns-ai-settings-data-card .description {2355 color:#aaa5b4!important2356 }2357 .mjcdesigns-ai-settings-wrap .notice {2358 box-sizing:border-box;2359 width:100%;2360 margin:0 0 15px2361 }2362 @media(max-width:782px) {2363 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpbody-content>.wrap,.mjcdesigns-ai-about-wrap {2364 padding:12px2365 }2366 .mjcdesigns-ai-about-heading {2367 padding:22px 18px;2368 gap:12px2369 }2370 .mjcdesigns-ai-about-heading>.dashicons {2371 width:32px;2372 height:32px;2373 font-size:19px2374 }2375 .mjcdesigns-ai-about-grid,.mjcdesigns-ai-terms-grid,.mjcdesigns-ai-settings-grid {2376 grid-template-columns:minmax(0,1fr)2377 }2378 .mjcdesigns-ai-settings-key-entry {2379 flex-direction:column2380 }2381 .mjcdesigns-ai-settings-key-entry .button-primary {2382 align-self:flex-start2383 2018 } 2384 2019 .mjcdesigns-ai-about-card { … … 4255 3890 overflow:auto; 4256 3891 padding:34px clamp(20px,5vw,42px) 28px; 4257 border: 1px solid #49396b;3892 border:0; 4258 3893 border-radius:20px; 4259 3894 background:radial-gradient(ellipse at 50% 0%,#2a203b 0,#19171f 42%,#151419 100%); … … 4270 3905 height:34px; 4271 3906 padding:0; 4272 border: 1px solid #49434f;3907 border:0; 4273 3908 border-radius:50%; 4274 3909 background:#211f27; … … 4279 3914 } 4280 3915 .mjcdesigns-ai-connectors-close:hover,.mjcdesigns-ai-connectors-close:focus-visible { 4281 border-color:#9a7be7;4282 3916 color:#fff; 4283 3917 outline:2px solid #9a7be780; … … 4319 3953 } 4320 3954 .mjcdesigns-ai-connectors-intro { 4321 max-width: 450px;3955 max-width:350px; 4322 3956 margin:15px 0 0; 4323 3957 color:#c2bdca; … … 4328 3962 margin-top:23px; 4329 3963 padding:20px 20px 10px; 4330 border: 1px solid #35313e;3964 border:0; 4331 3965 border-radius:13px; 4332 3966 background:rgba(17,16,21,.72) … … 4462 4096 font-size:12px 4463 4097 } 4098 4099 /* 1.1.4 workspace visual refresh. Keep existing controls and behavior intact. */ 4100 .mjcdesigns-ai-app { 4101 --mjcdesigns-ai-bg:#101013; 4102 --mjcdesigns-ai-panel:#17171b; 4103 --mjcdesigns-ai-line:#292832; 4104 --mjcdesigns-ai-muted:#aaa6b7; 4105 --mjcdesigns-ai-header:#25202f; 4106 --mjcdesigns-ai-surface:#1e1d23; 4107 } 4108 .mjcdesigns-ai-app .mjcdesigns-ai-panel { 4109 margin:12px 0 14px 12px; 4110 border:0; 4111 border-radius:11px; 4112 background:var(--mjcdesigns-ai-panel); 4113 } 4114 .mjcdesigns-ai-app .mjcdesigns-ai-panel-head { 4115 height:60px; 4116 padding:0 20px; 4117 border:0; 4118 border-radius:11px 11px 0 0; 4119 background:var(--mjcdesigns-ai-header); 4120 } 4121 .mjcdesigns-ai-app .mjcdesigns-ai-panel-brand-icon { 4122 width:34px; 4123 height:34px; 4124 border-radius:9px; 4125 } 4126 .mjcdesigns-ai-app .mjcdesigns-ai-panel-head-actions button, 4127 .mjcdesigns-ai-app .mjcdesigns-ai-collapse-button { 4128 border:0; 4129 background:transparent; 4130 color:#d6cce9; 4131 } 4132 .mjcdesigns-ai-app .mjcdesigns-ai-panel-head-actions button:hover, 4133 .mjcdesigns-ai-app .mjcdesigns-ai-panel-head-actions button:focus-visible, 4134 .mjcdesigns-ai-app .mjcdesigns-ai-collapse-button:hover, 4135 .mjcdesigns-ai-app .mjcdesigns-ai-collapse-button:focus-visible { 4136 background:#392d50; 4137 color:#fff; 4138 outline:2px solid #a48ae0; 4139 outline-offset:1px; 4140 } 4141 .mjcdesigns-ai-app .mjcdesigns-ai-main-column { 4142 padding-right:0; 4143 } 4144 .mjcdesigns-ai-app .mjcdesigns-ai-top { 4145 height:72px; 4146 margin:0 14px 0 18px; 4147 padding:0 28px; 4148 border:0; 4149 border-radius:0 0 12px 12px; 4150 background:var(--mjcdesigns-ai-header); 4151 } 4152 .mjcdesigns-ai-app .mjcdesigns-ai-logo small { 4153 color:#aaa3bb; 4154 } 4155 .mjcdesigns-ai-app .mjcdesigns-ai-top-right #mjcdesigns-ai-status { 4156 width:min(625px,42vw); 4157 max-width:625px; 4158 padding:11px 12px; 4159 border-radius:8px; 4160 background:#1d1c22; 4161 color:#aaa2b5; 4162 } 4163 .mjcdesigns-ai-app .mjcdesigns-ai-top-right a { 4164 color:#d7c6f5; 4165 } 4166 .mjcdesigns-ai-app .mjcdesigns-ai-alpha-notice { 4167 margin:10px 14px 0 18px; 4168 padding:11px 22px; 4169 border:0; 4170 border-radius:11px; 4171 background:#1e1e23; 4172 color:#a9a4b1; 4173 line-height:1.5; 4174 } 4175 .mjcdesigns-ai-app .mjcdesigns-ai-alpha-notice strong { 4176 color:#fff; 4177 } 4178 .mjcdesigns-ai-app .mjcdesigns-ai-toolbar { 4179 min-height:74px; 4180 margin:0 14px 0 18px; 4181 padding:0 22px; 4182 border:0; 4183 } 4184 .mjcdesigns-ai-app .mjcdesigns-ai-content { 4185 gap:16px; 4186 padding:0 14px 12px 18px; 4187 } 4188 .mjcdesigns-ai-app .mjcdesigns-ai-card { 4189 border:0; 4190 border-radius:12px; 4191 background:#17171b; 4192 } 4193 .mjcdesigns-ai-app .mjcdesigns-ai-card-head { 4194 height:52px; 4195 padding:0 15px; 4196 border:0; 4197 background:var(--mjcdesigns-ai-header); 4198 color:#b9afd4; 4199 } 4200 .mjcdesigns-ai-app .mjcdesigns-ai-card-head span { 4201 color:#aaa3ba; 4202 } 4203 .mjcdesigns-ai-app .mjcdesigns-ai-elements-card.is-collapsed .mjcdesigns-ai-card-head { 4204 height:100%; 4205 } 4206 .mjcdesigns-ai-app .mjcdesigns-ai-panel-content>.mjcdesigns-ai-label { 4207 color:#aaa3c3; 4208 } 4209 .mjcdesigns-ai-app .mjcdesigns-ai-document-picker-details>summary, 4210 .mjcdesigns-ai-app .mjcdesigns-ai-context, 4211 .mjcdesigns-ai-app .mjcdesigns-ai-model-picker select, 4212 .mjcdesigns-ai-app .mjcdesigns-ai-compose textarea { 4213 border-color:transparent; 4214 background:#202025; 4215 } 4216 .mjcdesigns-ai-app .mjcdesigns-ai-context { 4217 background:#25202f; 4218 } 4219 .mjcdesigns-ai-app .mjcdesigns-ai-welcome { 4220 border:0; 4221 background:linear-gradient(135deg,#25202f,#1e1d23); 4222 } 4223 .mjcdesigns-ai-app .mjcdesigns-ai-note { 4224 border-color:#2a2931; 4225 background:#17171b; 4226 } 4227 .mjcdesigns-ai-app .mjcdesigns-ai-compose { 4228 border-top:1px solid #292832; 4229 } 4230 .mjcdesigns-ai-app .mjcdesigns-ai-btn, 4231 .mjcdesigns-ai-app .mjcdesigns-ai-preview-card .mjcdesigns-ai-preview-devices button, 4232 .mjcdesigns-ai-app .mjcdesigns-ai-preview-card .mjcdesigns-ai-preview-modes button, 4233 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-open, 4234 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-modal-open, 4235 .mjcdesigns-ai-app .mjcdesigns-ai-image-button { 4236 border-color:transparent; 4237 border-radius:8px; 4238 background:#242329; 4239 color:#d8caf6; 4240 } 4241 .mjcdesigns-ai-app .mjcdesigns-ai-btn:hover:not(:disabled), 4242 .mjcdesigns-ai-app .mjcdesigns-ai-preview-card .mjcdesigns-ai-preview-devices button:hover, 4243 .mjcdesigns-ai-app .mjcdesigns-ai-preview-card .mjcdesigns-ai-preview-modes button:hover, 4244 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-open:hover, 4245 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-modal-open:hover, 4246 .mjcdesigns-ai-app .mjcdesigns-ai-image-button:hover { 4247 border-color:transparent; 4248 background:#382d50; 4249 color:#fff; 4250 } 4251 .mjcdesigns-ai-app .mjcdesigns-ai-preview-card .mjcdesigns-ai-preview-devices button.active, 4252 .mjcdesigns-ai-app .mjcdesigns-ai-preview-card .mjcdesigns-ai-preview-modes button.active { 4253 border-color:transparent; 4254 background:#3a2d50; 4255 color:#fff; 4256 } 4257 .mjcdesigns-ai-app .mjcdesigns-ai-btn:disabled { 4258 opacity:.55; 4259 } 4260 .mjcdesigns-ai-app #mjcdesigns-ai-builder { 4261 background:#29272f; 4262 color:#fff; 4263 } 4264 .mjcdesigns-ai-app .mjcdesigns-ai-apply { 4265 border-color:transparent; 4266 background:#5f41b0; 4267 color:#fff; 4268 } 4269 .mjcdesigns-ai-app .mjcdesigns-ai-apply:hover:not(:disabled) { 4270 background:#7355c7; 4271 } 4272 .mjcdesigns-ai-app .mjcdesigns-ai-element-settings { 4273 inset:60px 8px 8px; 4274 border-color:#17171b; 4275 border-radius:11px; 4276 background:#17171b; 4277 } 4278 .mjcdesigns-ai-app .mjcdesigns-ai-element-settings-close { 4279 width:33px; 4280 height:33px; 4281 border:0; 4282 border-radius:8px; 4283 background:#29272f; 4284 color:#fff; 4285 font-size:21px; 4286 } 4287 .mjcdesigns-ai-app .mjcdesigns-ai-element-settings-close:hover, 4288 .mjcdesigns-ai-app .mjcdesigns-ai-element-settings-close:focus-visible { 4289 border:0; 4290 background:#493763; 4291 outline:2px solid #a48ae0; 4292 outline-offset:1px; 4293 } 4294 .mjcdesigns-ai-app .mjcdesigns-ai-element-settings-head { 4295 border-bottom-color:#2b2930; 4296 } 4297 .mjcdesigns-ai-app .mjcdesigns-ai-bottom-note { 4298 color:#8c8797; 4299 } 4300 @media(min-width:1101px) { 4301 .mjcdesigns-ai-app .mjcdesigns-ai-content:not(.elements-collapsed) { 4302 grid-template-rows:minmax(360px,1.4fr) minmax(260px,1fr); 4303 } 4304 } 4305 @media(min-width:783px) { 4306 .mjcdesigns-ai-app .mjcdesigns-ai-workspace.sidebar-collapsed { 4307 grid-template-columns:96px 0 minmax(0,1fr); 4308 } 4309 .mjcdesigns-ai-app .mjcdesigns-ai-workspace.sidebar-collapsed .mjcdesigns-ai-panel { 4310 margin-left:18px; 4311 background:transparent; 4312 } 4313 .mjcdesigns-ai-app .mjcdesigns-ai-workspace.sidebar-collapsed .mjcdesigns-ai-panel-head { 4314 height:auto; 4315 min-height:100%; 4316 padding:15px 8px; 4317 border-radius:11px; 4318 background:var(--mjcdesigns-ai-header); 4319 } 4320 .mjcdesigns-ai-app .mjcdesigns-ai-workspace.sidebar-collapsed .mjcdesigns-ai-panel-brand-label { 4321 font-size:12px; 4322 } 4323 } 4324 @media(max-width:782px) { 4325 .mjcdesigns-ai-app .mjcdesigns-ai-panel { 4326 margin:8px 10px 0; 4327 } 4328 .mjcdesigns-ai-app .mjcdesigns-ai-top, 4329 .mjcdesigns-ai-app .mjcdesigns-ai-alpha-notice, 4330 .mjcdesigns-ai-app .mjcdesigns-ai-toolbar { 4331 margin-left:10px; 4332 margin-right:10px; 4333 } 4334 .mjcdesigns-ai-app .mjcdesigns-ai-top { 4335 padding:0 12px; 4336 } 4337 .mjcdesigns-ai-app .mjcdesigns-ai-content { 4338 padding:0 10px 10px; 4339 } 4340 } 4341 4342 /* 1.1.4 preview and selector refinements. */ 4343 .mjcdesigns-ai-app .mjcdesigns-ai-document-picker-details>summary, 4344 .mjcdesigns-ai-app .mjcdesigns-ai-document-picker-list { 4345 border:0; 4346 } 4347 .mjcdesigns-ai-app .mjcdesigns-ai-alpha-notice { 4348 padding-top:7px; 4349 padding-bottom:7px; 4350 line-height:1.4; 4351 } 4352 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview { 4353 border:0; 4354 } 4355 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-head { 4356 position:relative; 4357 z-index:3; 4358 border:0; 4359 } 4360 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-devices { 4361 display:none; 4362 } 4363 .mjcdesigns-ai-preview-viewport-picker { 4364 position:relative; 4365 flex:0 1 235px; 4366 min-width:170px; 4367 max-width:100%; 4368 color:#f4f2f8; 4369 font-size:12px; 4370 letter-spacing:0; 4371 } 4372 .mjcdesigns-ai-preview-viewport-picker>summary { 4373 display:flex; 4374 align-items:center; 4375 min-height:31px; 4376 padding:5px 10px; 4377 border:0; 4378 border-radius:7px; 4379 background:#242329; 4380 cursor:pointer; 4381 list-style:none; 4382 } 4383 .mjcdesigns-ai-preview-viewport-picker>summary::-webkit-details-marker { 4384 display:none; 4385 } 4386 .mjcdesigns-ai-preview-viewport-picker>summary::after { 4387 content:"▾"; 4388 margin-left:auto; 4389 padding-left:10px; 4390 color:#c8c4d0; 4391 } 4392 .mjcdesigns-ai-preview-viewport-picker>summary:focus-visible { 4393 outline:2px solid #a48ae0; 4394 outline-offset:2px; 4395 } 4396 .mjcdesigns-ai-preview-viewport-name { 4397 min-width:0; 4398 overflow:hidden; 4399 text-overflow:ellipsis; 4400 white-space:nowrap; 4401 } 4402 .mjcdesigns-ai-preview-viewport-list { 4403 position:absolute; 4404 top:calc(100% + 5px); 4405 left:0; 4406 z-index:5; 4407 width:max(100%,235px); 4408 max-width:min(300px,80vw); 4409 max-height:260px; 4410 overflow:auto; 4411 padding:5px; 4412 border:0; 4413 border-radius:8px; 4414 background:#1d1c21; 4415 box-shadow:0 12px 30px #0009; 4416 } 4417 .mjcdesigns-ai-preview-viewport-option { 4418 display:block; 4419 width:100%; 4420 min-height:34px; 4421 padding:7px 9px; 4422 border:0; 4423 border-radius:5px; 4424 background:transparent; 4425 color:#f1eff5; 4426 font:inherit; 4427 text-align:left; 4428 cursor:pointer; 4429 } 4430 .mjcdesigns-ai-preview-viewport-option:hover, 4431 .mjcdesigns-ai-preview-viewport-option[aria-selected="true"] { 4432 background:#2b2635; 4433 } 4434 .mjcdesigns-ai-preview-viewport-option:focus-visible { 4435 outline:2px solid #a48ae0; 4436 outline-offset:-2px; 4437 } 4438 .mjcdesigns-ai-preview-modal-dialog { 4439 border:0; 4440 } 4441 .mjcdesigns-ai-preview-modal-header, 4442 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-head { 4443 border:0; 4444 } 4445 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-modes, 4446 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-devices button, 4447 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-modes button, 4448 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-open, 4449 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-modal-close, 4450 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-custom-editor input { 4451 border:0; 4452 } 4453 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-devices button:hover, 4454 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-devices button.active, 4455 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-modal-close:hover { 4456 border:0; 4457 } 4458 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-viewport-picker { 4459 display:none; 4460 } 4461 4462 /* Group only the workspace preview controls; the expanded modal keeps its layout. */ 4463 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-head { 4464 display:flex; 4465 flex-direction:column; 4466 align-items:stretch; 4467 justify-content:center; 4468 gap:7px; 4469 padding:8px 10px; 4470 } 4471 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-controls { 4472 display:flex; 4473 flex:0 0 auto; 4474 flex-direction:column; 4475 align-items:stretch; 4476 width:100%; 4477 gap:7px; 4478 } 4479 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-primary-controls, 4480 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-actions { 4481 display:flex; 4482 align-items:center; 4483 justify-content:center; 4484 gap:6px; 4485 width:100%; 4486 min-width:0; 4487 } 4488 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-primary-controls { 4489 flex-wrap:wrap; 4490 } 4491 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-actions { 4492 flex-wrap:wrap; 4493 } 4494 .mjcdesigns-ai-app #mjcdesigns-ai-preview-content .mjcdesigns-ai-preview-controls-toggle { 4495 align-self:center; 4496 justify-content:center; 4497 width:100%; 4498 min-height:20px; 4499 margin:0; 4500 } 4501 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-primary-controls, 4502 .mjcdesigns-ai-preview-modal-dialog .mjcdesigns-ai-preview-actions { 4503 display:contents; 4504 } 4505 .mjcdesigns-ai-app .mjcdesigns-ai-loading-panel { 4506 border:0; 4507 } 4508 .mjcdesigns-ai-app .mjcdesigns-ai-bottom-note { 4509 padding:10px; 4510 } 4511 4512 /* 1.1.4 subpage surfaces: keep table grids, buttons, and separators visible. */ 4513 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-about-heading, 4514 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-about-card, 4515 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-about-facts>div, 4516 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-terms-notice, 4517 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-creator-footer, 4518 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-faq-item, 4519 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-about-limit-list, 4520 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-settings-privacy-warning { 4521 border:0; 4522 } 4523 .mjcdesigns-ai-about-wrap .mjcdesigns-ai-creator-footer-button { 4524 border:0; 4525 } 4526 .mjcdesigns-ai-app .mjcdesigns-ai-document-picker-details>summary::after { 4527 content:""; 4528 flex:0 0 auto; 4529 width:0; 4530 height:0; 4531 margin-left:auto; 4532 border-left:4px solid transparent; 4533 border-right:4px solid transparent; 4534 border-top:5px solid #c8c4d0; 4535 } 4536 .mjcdesigns-ai-app .mjcdesigns-ai-document-picker-details[open]>summary::after { 4537 transform:rotate(180deg); 4538 } -
mjcdesigns-ai-design-assistant-bricks/trunk/assets/app.js
r3748329 r3751226 20 20 currentPreviewError: '', 21 21 previewMode: 'current', 22 previewControlsCollapsed: false,22 previewControlsCollapsed: true, 23 23 selectedId: null, 24 24 settingsElementId: null, … … 478 478 const previewHead = document.createElement('div'); previewHead.className = 'mjcdesigns-ai-preview-head'; 479 479 const previewControls = document.createElement('div'); previewControls.className = 'mjcdesigns-ai-preview-controls'; 480 const primaryControls = document.createElement('div'); primaryControls.className = 'mjcdesigns-ai-preview-primary-controls'; 481 const previewActions = document.createElement('div'); previewActions.className = 'mjcdesigns-ai-preview-actions'; 480 482 if (proposal) { 481 483 const modes = document.createElement('div'); modes.className = 'mjcdesigns-ai-preview-modes'; modes.setAttribute('role', 'group'); modes.setAttribute('aria-label', 'Choose page version to preview'); 482 484 [['current', 'Current page'], ['proposed', 'Proposed changes']].forEach(([mode, label]) => { const button = document.createElement('button'); button.type = 'button'; button.textContent = label; button.classList.toggle('active', state.previewMode === mode); button.setAttribute('aria-pressed', state.previewMode === mode ? 'true' : 'false'); button.addEventListener('click', () => { state.previewMode = mode; if (state.previewObserver) { state.previewObserver.disconnect(); state.previewObserver = null; } renderFrontendPreview(state.proposal); }); modes.append(button); }); 483 pr eviewControls.append(modes);485 primaryControls.append(modes); 484 486 } 485 487 let devices = null; 488 let viewportPicker = null; 486 489 ensurePreviewViewportSelection(); 487 490 if (previewUrl) { 491 viewportPicker = document.createElement('details'); viewportPicker.className = 'mjcdesigns-ai-preview-viewport-picker'; 492 const viewportSummary = document.createElement('summary'); viewportSummary.setAttribute('aria-label', 'Choose frontend preview viewport'); 493 const viewportSummaryLabel = document.createElement('span'); viewportSummaryLabel.className = 'mjcdesigns-ai-preview-viewport-name'; viewportSummary.append(viewportSummaryLabel); 494 const viewportList = document.createElement('div'); viewportList.className = 'mjcdesigns-ai-preview-viewport-list'; viewportList.setAttribute('role', 'listbox'); viewportList.setAttribute('aria-label', 'Frontend preview viewports'); 488 495 devices = document.createElement('div'); devices.className = 'mjcdesigns-ai-preview-devices'; devices.setAttribute('role', 'group'); devices.setAttribute('aria-label', 'Preview viewport'); 489 496 state.previewViewports.forEach((viewport) => { 490 497 const label = viewport.label || viewport.key; const width = Number(viewport.width) || 0; 491 const button = document.createElement('button'); button.type = 'button'; button.dataset.viewport = viewport.key; button.textContent = label + ' · ' + width + 'px' + (viewport.paused ? ' (Paused)' : ''); button.title = 'Preview at ' + width + 'px' + (viewport.paused ? ' · Paused in Bricks' : ''); button.setAttribute('aria-label', 'Preview at ' + label + ', ' + width + ' pixels' + (viewport.paused ? ', paused in Bricks' : '')); button.setAttribute('aria-pressed', state.previewViewport === viewport.key ? 'true' : 'false'); 498 const viewportText = label + ' · ' + width + 'px' + (viewport.paused ? ' (Paused)' : ''); 499 const button = document.createElement('button'); button.type = 'button'; button.dataset.viewport = viewport.key; button.textContent = viewportText; button.title = 'Preview at ' + width + 'px' + (viewport.paused ? ' · Paused in Bricks' : ''); button.setAttribute('aria-label', 'Preview at ' + label + ', ' + width + ' pixels' + (viewport.paused ? ', paused in Bricks' : '')); button.setAttribute('aria-pressed', state.previewViewport === viewport.key ? 'true' : 'false'); 492 500 button.classList.toggle('active', state.previewViewport === viewport.key); devices.append(button); 501 const option = document.createElement('button'); option.type = 'button'; option.className = 'mjcdesigns-ai-preview-viewport-option'; option.dataset.viewport = viewport.key; option.setAttribute('role', 'option'); option.setAttribute('aria-selected', String(state.previewViewport === viewport.key)); option.textContent = viewportText; viewportList.append(option); 502 if (state.previewViewport === viewport.key) viewportSummaryLabel.textContent = viewportText; 493 503 }); 494 previewControls.append(devices); 504 viewportPicker.append(viewportSummary, viewportList); 505 primaryControls.append(viewportPicker, devices); 495 506 } 496 507 if (openPreviewUrl) { … … 502 513 showConfirmation(isProposedPreviewLink ? 'Open this preview?' : 'Open the selected page?', message, 'Open preview', 'Stay here', () => window.open(openPreviewUrl, '_blank', 'noopener')); 503 514 }); 504 preview Controls.append(openPreview);515 previewActions.append(openPreview); 505 516 const modalButton = document.createElement('button'); modalButton.type = 'button'; modalButton.className = 'mjcdesigns-ai-preview-modal-open'; modalButton.textContent = 'Expand preview'; modalButton.setAttribute('aria-label', 'Expand frontend preview'); modalButton.addEventListener('click', () => openPreviewModal(preview, modalButton)); 506 previewControls.append(modalButton); 507 } 517 previewActions.append(modalButton); 518 } 519 if (primaryControls.hasChildNodes()) previewControls.append(primaryControls); 520 if (previewActions.hasChildNodes()) previewControls.append(previewActions); 508 521 preview.classList.toggle('preview-controls-collapsed', state.previewControlsCollapsed); 509 522 const controlsToggle = document.createElement('button'); controlsToggle.type = 'button'; controlsToggle.className = 'mjcdesigns-ai-preview-controls-toggle'; … … 555 568 preview.resizePreview = resizePreview; 556 569 if (devices) { 557 devices.querySelectorAll('button').forEach((button) => button.addEventListener('click', () => {558 state.previewViewport = button.dataset.viewport;570 const selectViewport = (key) => { 571 state.previewViewport = key; 559 572 if (state.previewModal) { 560 573 state.modalCustomViewport.active = false; 561 574 state.previewModal.syncCustomSelection(); 562 575 } 563 devices.querySelectorAll('button').forEach((item) => { const active = item === button; item.classList.toggle('active', active); item.setAttribute('aria-pressed', active ? 'true' : 'false'); }); 576 devices.querySelectorAll('button[data-viewport]').forEach((item) => { const active = item.dataset.viewport === key; item.classList.toggle('active', active); item.setAttribute('aria-pressed', String(active)); }); 577 viewportPicker.querySelectorAll('button[data-viewport]').forEach((item) => { const active = item.dataset.viewport === key; item.setAttribute('aria-selected', String(active)); if (active) viewportPicker.querySelector('.mjcdesigns-ai-preview-viewport-name').textContent = item.textContent; }); 578 viewportPicker.open = false; 564 579 resizePreview(); 565 })); 580 }; 581 devices.querySelectorAll('button[data-viewport]').forEach((button) => button.addEventListener('click', () => selectViewport(button.dataset.viewport))); 582 viewportPicker.querySelectorAll('button[data-viewport]').forEach((option) => option.addEventListener('click', () => selectViewport(option.dataset.viewport))); 566 583 } 567 584 resizePreview(); … … 574 591 function openPreviewModal(preview, trigger) { 575 592 if (!preview || state.previewModal) return; 593 const viewportPicker = preview.querySelector('.mjcdesigns-ai-preview-viewport-picker'); 594 if (viewportPicker) viewportPicker.open = false; 576 595 const placeholder = document.createComment('MJC Designs preview modal placeholder'); 577 596 preview.parentNode.insertBefore(placeholder, preview); … … 828 847 else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); } 829 848 }); 830 document.addEventListener('click', (event) => { const details = document.querySelector('.mjcdesigns-ai-document-picker-details[open]'); if (details && !details.contains(event.target)) details.open = false; if (tooltipPinned && tooltipTarget && !tooltipTarget.contains(event.target)) hideTooltip(); });849 document.addEventListener('click', (event) => { const details = document.querySelector('.mjcdesigns-ai-document-picker-details[open]'); if (details && !details.contains(event.target)) details.open = false; const viewportPicker = document.querySelector('.mjcdesigns-ai-preview-viewport-picker[open]'); if (viewportPicker && !viewportPicker.contains(event.target)) viewportPicker.open = false; if (tooltipPinned && tooltipTarget && !tooltipTarget.contains(event.target)) hideTooltip(); }); 831 850 $('mjcdesigns-ai-refresh').addEventListener('click', () => loadDocuments(state.doc && state.doc.id)); 832 851 $('mjcdesigns-ai-send').addEventListener('click', generate); -
mjcdesigns-ai-design-assistant-bricks/trunk/mjcdesigns-ai-design-assistant-bricks.php
r3748329 r3751226 3 3 * Plugin Name: MJC Designs AI Design Assistant for Bricks Builder 4 4 * Description: MJC Designs AI Design Assistant for Bricks Builder is an independent integration, not affiliated with or endorsed by Bricks Builder or its developers. 5 * Version: 1.1. 35 * Version: 1.1.4 6 6 * Author: MJC Designs 7 7 * Requires at least: 7.0 … … 18 18 */ 19 19 if ( ! defined( 'ABSPATH' ) ) { exit; } 20 define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_VERSION', '1.1. 3' );20 define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_VERSION', '1.1.4' ); 21 21 define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_FILE', __FILE__ ); 22 22 define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_URL', plugin_dir_url( __FILE__ ) ); … … 50 50 function mjcdesigns_ai_design_assistant_bricks_changelog() { 51 51 return array( 52 array( 'version' => '1.1.4 (alpha)', 'released_at' => '2026-10-17 06:35:34', 'type' => 'change', 'label' => 'Workspace design revision', 'items' => array( 'Refresh the workspace and expanded preview styling with cleaner surfaces and controls, and simplify the workspace preview layout while keeping the design workflow intact.' ) ), 52 53 array( 'version' => '1.1.3 (alpha)', 'released_at' => '2026-10-15 03:49:05', 'type' => 'change', 'label' => 'Alpha improvement', 'items' => array( 'Allow users to drag an image onto the prompt area to attach it as a reference, with a clear drop overlay and the existing file validation.', 'Pretty-print object settings with their original keys, quoted string values, and indentation in the Page Elements inspector preview without changing saved or proposed element data.', 'Replace the three bouncing dots in the main loading modal with the animated MJC Designs AI logo for page loading, applying, undoing, and other busy actions.', 'Load the logo GIF when the modal opens and remove the unused three-dot modal animation styles.', 'Add a Custom viewport control to the expanded frontend preview with editable pixel width and height, without changing the regular preview viewport.', 'Continue the public alpha evaluation phase; suggestions may be incomplete, and bugs or unexpected results are still possible.' ) ), 53 54 array( 'version' => '1.1.2 (alpha)', 'released_at' => '2026-10-12 21:39:09', 'type' => 'fix', 'label' => 'Review fixes', 'items' => array( 'Migrate text generation to the WordPress AI Client and add a per-user provider/model selector backed by configured Connectors, with image-capability checks for reference uploads.', 'Restrict AI proposals to registered native Bricks controls; exclude code controls and reject _cssCustom instead of writing arbitrary CSS.', 'Use attached reference images only for their own request and remove remote placeholder-image instructions.', 'Rename the plugin branding to MJC Designs AI Design Assistant for Bricks Builder while retaining the brick-and-spark icon and updating its wordmark.', 'Update privacy and usage disclosures for provider-managed credentials, provider-specific costs, and data handling.', 'Add translator context for the AI provider error message placeholder reported by Plugin Check.', 'Simplify the AI model selector into a compact row and correct its width so it no longer crowds the prompt composer.', 'Move the assistant into a full-height left column, with the app header and workspace tools stacked in the right column.', 'Prefix admin pages, REST routes, asset handles, localized JavaScript data, PHP functions and constants, UI selectors, and new stored data with distinctive MJC Designs identifiers; keep old names only for cleanup of data from earlier alpha builds.', 'Restore tooltip text lookup after prefixing and render the tooltip layer at document level so it can extend beyond workspace clipping while staying within the viewport.', 'Normalize all packaged text files to LF line endings to prevent Plugin Check mixed-line-ending warnings.', 'Build preview viewport buttons from Bricks’ configured breakpoint labels and builder widths, including custom and paused breakpoints; refresh the list when the workspace loads or is refreshed.', 'Add a backdrop modal for the existing interactive frontend preview, with close, Escape, outside-click dismissal, focus handling, and the same breakpoint controls; preserve the separate Open preview action.', 'Pass Bricks controls’ registered required_when dependencies to the AI and validate changed control prerequisites against the final element settings, rejecting flex-direction values when the matching display is not flex or inline-flex.', 'Increase breakpoint and toolbar text sizes inside the expanded preview modal while retaining compact controls in the regular workspace preview.', 'Add a one-step Redo action paired with Undo; preserve stale-document checks and clear the redo snapshot when a new assistant change is applied.', 'Hide the redundant Expand preview action while the preview is already open in its modal.', 'Use the all-caps FRONTEND PREVIEW title in the expanded modal, center regular preview controls, and style Open preview to match the controls.', 'Show an accessible purple circular loading indicator over frontend preview iframes until the page loads, including the cache-busting retry.', 'Guide generation to use only available media references and never invent remote file URLs; remove the last Custom CSS fallback instruction.', 'Identify the plugin as an independent integration in its public description and align minimum-version messages with WordPress 7.0.', 'Clarify in the privacy documentation that provider requests go to the service configured in the selected WordPress Connector.', 'Display the full plugin name and a clear non-affiliation and non-endorsement statement throughout the plugin admin screens, including the main workspace and subpages; align the plugin header description with that wording.', 'Document the included human-readable JavaScript and CSS source files in the readme and clarify that the plugin uses them directly without a build step.' ) ), -
mjcdesigns-ai-design-assistant-bricks/trunk/readme.txt
r3748329 r3751226 5 5 Tested up to: 7.1 6 6 Requires PHP: 7.4 7 Stable tag: 1.1. 37 Stable tag: 1.1.4 8 8 License: GPL-2.0-or-later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 95 95 96 96 == Changelog == 97 98 = 1.1.4 = 99 * Workspace design revision · Alpha · 2026-10-17 06:35:34 PHT 100 1. Refresh the workspace and expanded preview styling with cleaner surfaces and controls, and simplify the workspace preview layout while keeping the design workflow intact. 97 101 98 102 = 1.1.3 =
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)