Plugin Directory

Changeset 3751226


Ignore:
Timestamp:
10/16/2026 10:50:09 PM (3 hours ago)
Author:
mjcdesigns
Message:

Version 1.1.4 Release

Location:
mjcdesigns-ai-design-assistant-bricks/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • mjcdesigns-ai-design-assistant-bricks/trunk/assets/admin.css

    r3748329 r3751226  
    464464  line-height:1.5;
    465465  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:auto
    473466}
    474467.mjcdesigns-ai-apply {
    … …  
    908901  font-weight:600
    909902}
    910 .mjcdesigns-ai-about-card--brand {
    911   background:linear-gradient(145deg,#17151d,#292237);
    912   border-color:#383047;
    913   color:#f7f5fa
    914 }
    915 .mjcdesigns-ai-about-card--brand h2 {
    916   color:white
    917 }
    918 .mjcdesigns-ai-about-card--brand h2 .dashicons {
    919   background:#5f41b0;
    920   color:white
    921 }
    922 .mjcdesigns-ai-about-card--brand>p {
    923   color:#d6d2df
    924 }
    925903.mjcdesigns-ai-about-facts {
    926904  display:grid;
    … …  
    950928  color:white;
    951929  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 #ffffff2b
    962930}
    963931.mjcdesigns-ai-about-steps {
    … …  
    12141182  line-height:1.6
    12151183}
    1216 .mjcdesigns-ai-terms-card {
    1217   background:#18181d
    1218 }
    12191184.mjcdesigns-ai-terms-grid .mjcdesigns-ai-about-card p:last-child {
    12201185  margin-bottom:0
    … …  
    19141879  color:#d6d2df
    19151880}
    1916 /* Full-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. */
    19171882body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpcontent {
    19181883  padding-left:0;
    … …  
    19881953  grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr)
    19891954}
    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 {
    19911956  margin-bottom:12px
    19921957}
    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 {
    20561959  margin:9px 0 0;
    20571960  color:#a7a3ae;
    … …  
    20591962  line-height:1.55
    20601963}
    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 {
    20881965  color:#c8b7fa;
    20891966  text-decoration:none;
    20901967  font-weight:650
    20911968}
    2092 .mjcdesigns-ai-settings-model a:hover,.mjcdesigns-ai-settings-policy-link:hover {
     1969.mjcdesigns-ai-settings-policy-link:hover {
    20931970  text-decoration:underline;
    20941971  color:#fff
    … …  
    21392016  .mjcdesigns-ai-about-grid,.mjcdesigns-ai-terms-grid,.mjcdesigns-ai-settings-grid {
    21402017    grid-template-columns:minmax(0,1fr)
    2141   }
    2142   .mjcdesigns-ai-settings-key-entry {
    2143     flex-direction:column
    2144   }
    2145   .mjcdesigns-ai-settings-key-entry .button-primary {
    2146     align-self:flex-start
    2147   }
    2148   .mjcdesigns-ai-about-card {
    2149     height:auto
    2150   }
    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:#f6f5f8
    2157 }
    2158 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpbody-content {
    2159   padding-bottom:0;
    2160   background:#101013
    2161 }
    2162 body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpfooter {
    2163   background:#101013;
    2164   color:#96929e
    2165 }
    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 34px
    2172 }
    2173 body[class*="mjcdesigns-ai-design-assistant-bricks"] .notice {
    2174   margin:0 0 15px
    2175 }
    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:#f6f5f8
    2185 }
    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:none
    2190 }
    2191 .mjcdesigns-ai-about-heading {
    2192   margin:4px 0 20px;
    2193   padding:28px 30px
    2194 }
    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:1
    2205 }
    2206 .mjcdesigns-ai-about-grid,.mjcdesigns-ai-terms-grid {
    2207   margin:0;
    2208   align-items:stretch
    2209 }
    2210 .mjcdesigns-ai-about-card {
    2211   height:100%;
    2212   box-sizing:border-box
    2213 }
    2214 .mjcdesigns-ai-about-footer {
    2215   margin:18px 0 0
    2216 }
    2217 .mjcdesigns-ai-terms-notice {
    2218   margin:0 0 15px
    2219 }
    2220 .mjcdesigns-ai-settings-wrap {
    2221   padding-top:18px
    2222 }
    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:12px
    2228 }
    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:12px
    2240 }
    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 #ffffff0b
    2248 }
    2249 .mjcdesigns-ai-settings-state-dot.is-saved {
    2250   background:#55c589;
    2251   box-shadow:0 0 0 4px #55c58920
    2252 }
    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:650
    2259 }
    2260 .mjcdesigns-ai-settings-key-entry {
    2261   display:flex;
    2262   align-items:stretch;
    2263   gap:9px
    2264 }
    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:#f6f5f8
    2275 }
    2276 .mjcdesigns-ai-settings-key-entry input:focus {
    2277   border-color:#8a70d0;
    2278   box-shadow:0 0 0 1px #5f41b0;
    2279   outline:none
    2280 }
    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:11px
    2290 }
    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.55
    2296 }
    2297 .mjcdesigns-ai-settings-clear-form {
    2298   margin-top:13px;
    2299   padding-top:13px;
    2300   border-top:1px solid #302e36
    2301 }
    2302 .mjcdesigns-ai-settings-clear-form .button {
    2303   min-height:34px;
    2304   border-color:#494550;
    2305   border-radius:6px;
    2306   background:#26242b;
    2307   color:#dedbe4
    2308 }
    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:11px
    2315 }
    2316 .mjcdesigns-ai-settings-model code {
    2317   display:inline-block;
    2318   padding:3px 6px;
    2319   border-radius:5px;
    2320   background:#2a2435;
    2321   color:#dcd1fc
    2322 }
    2323 .mjcdesigns-ai-settings-model a,.mjcdesigns-ai-settings-policy-link {
    2324   color:#c8b7fa;
    2325   text-decoration:none;
    2326   font-weight:650
    2327 }
    2328 .mjcdesigns-ai-settings-model a:hover,.mjcdesigns-ai-settings-policy-link:hover {
    2329   text-decoration:underline;
    2330   color:#fff
    2331 }
    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:#282131
    2339 }
    2340 .mjcdesigns-ai-settings-data-card {
    2341   background:linear-gradient(145deg,#17151d,#292237);
    2342   border-color:#383047
    2343 }
    2344 .mjcdesigns-ai-settings-data-card h2 {
    2345   color:#fff
    2346 }
    2347 .mjcdesigns-ai-settings-data-card h2 .dashicons {
    2348   background:#5f41b0;
    2349   color:#fff
    2350 }
    2351 .mjcdesigns-ai-settings-data-card p {
    2352   color:#d6d2df
    2353 }
    2354 .mjcdesigns-ai-settings-data-card .description {
    2355   color:#aaa5b4!important
    2356 }
    2357 .mjcdesigns-ai-settings-wrap .notice {
    2358   box-sizing:border-box;
    2359   width:100%;
    2360   margin:0 0 15px
    2361 }
    2362 @media(max-width:782px) {
    2363   body[class*="mjcdesigns-ai-design-assistant-bricks"] #wpbody-content>.wrap,.mjcdesigns-ai-about-wrap {
    2364     padding:12px
    2365   }
    2366   .mjcdesigns-ai-about-heading {
    2367     padding:22px 18px;
    2368     gap:12px
    2369   }
    2370   .mjcdesigns-ai-about-heading>.dashicons {
    2371     width:32px;
    2372     height:32px;
    2373     font-size:19px
    2374   }
    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:column
    2380   }
    2381   .mjcdesigns-ai-settings-key-entry .button-primary {
    2382     align-self:flex-start
    23832018  }
    23842019  .mjcdesigns-ai-about-card {
    … …  
    42553890  overflow:auto;
    42563891  padding:34px clamp(20px,5vw,42px) 28px;
    4257   border:1px solid #49396b;
     3892  border:0;
    42583893  border-radius:20px;
    42593894  background:radial-gradient(ellipse at 50% 0%,#2a203b 0,#19171f 42%,#151419 100%);
    … …  
    42703905  height:34px;
    42713906  padding:0;
    4272   border:1px solid #49434f;
     3907  border:0;
    42733908  border-radius:50%;
    42743909  background:#211f27;
    … …  
    42793914}
    42803915.mjcdesigns-ai-connectors-close:hover,.mjcdesigns-ai-connectors-close:focus-visible {
    4281   border-color:#9a7be7;
    42823916  color:#fff;
    42833917  outline:2px solid #9a7be780;
    … …  
    43193953}
    43203954.mjcdesigns-ai-connectors-intro {
    4321   max-width:450px;
     3955  max-width:350px;
    43223956  margin:15px 0 0;
    43233957  color:#c2bdca;
    … …  
    43283962  margin-top:23px;
    43293963  padding:20px 20px 10px;
    4330   border:1px solid #35313e;
     3964  border:0;
    43313965  border-radius:13px;
    43323966  background:rgba(17,16,21,.72)
    … …  
    44624096  font-size:12px
    44634097}
     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  
    2020    currentPreviewError: '',
    2121    previewMode: 'current',
    22     previewControlsCollapsed: false,
     22    previewControlsCollapsed: true,
    2323    selectedId: null,
    2424    settingsElementId: null,
    … …  
    478478    const previewHead = document.createElement('div'); previewHead.className = 'mjcdesigns-ai-preview-head';
    479479    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';
    480482    if (proposal) {
    481483      const modes = document.createElement('div'); modes.className = 'mjcdesigns-ai-preview-modes'; modes.setAttribute('role', 'group'); modes.setAttribute('aria-label', 'Choose page version to preview');
    482484      [['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       previewControls.append(modes);
     485      primaryControls.append(modes);
    484486    }
    485487    let devices = null;
     488    let viewportPicker = null;
    486489    ensurePreviewViewportSelection();
    487490    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');
    488495      devices = document.createElement('div'); devices.className = 'mjcdesigns-ai-preview-devices'; devices.setAttribute('role', 'group'); devices.setAttribute('aria-label', 'Preview viewport');
    489496      state.previewViewports.forEach((viewport) => {
    490497        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');
    492500        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;
    493503      });
    494       previewControls.append(devices);
     504      viewportPicker.append(viewportSummary, viewportList);
     505      primaryControls.append(viewportPicker, devices);
    495506    }
    496507    if (openPreviewUrl) {
    … …  
    502513        showConfirmation(isProposedPreviewLink ? 'Open this preview?' : 'Open the selected page?', message, 'Open preview', 'Stay here', () => window.open(openPreviewUrl, '_blank', 'noopener'));
    503514      });
    504       previewControls.append(openPreview);
     515      previewActions.append(openPreview);
    505516      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);
    508521    preview.classList.toggle('preview-controls-collapsed', state.previewControlsCollapsed);
    509522    const controlsToggle = document.createElement('button'); controlsToggle.type = 'button'; controlsToggle.className = 'mjcdesigns-ai-preview-controls-toggle';
    … …  
    555568      preview.resizePreview = resizePreview;
    556569      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;
    559572          if (state.previewModal) {
    560573            state.modalCustomViewport.active = false;
    561574            state.previewModal.syncCustomSelection();
    562575          }
    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;
    564579          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)));
    566583      }
    567584      resizePreview();
    … …  
    574591  function openPreviewModal(preview, trigger) {
    575592    if (!preview || state.previewModal) return;
     593    const viewportPicker = preview.querySelector('.mjcdesigns-ai-preview-viewport-picker');
     594    if (viewportPicker) viewportPicker.open = false;
    576595    const placeholder = document.createComment('MJC Designs preview modal placeholder');
    577596    preview.parentNode.insertBefore(placeholder, preview);
    … …  
    828847    else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }
    829848  });
    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(); });
    831850  $('mjcdesigns-ai-refresh').addEventListener('click', () => loadDocuments(state.doc && state.doc.id));
    832851  $('mjcdesigns-ai-send').addEventListener('click', generate);
  • mjcdesigns-ai-design-assistant-bricks/trunk/mjcdesigns-ai-design-assistant-bricks.php

    r3748329 r3751226  
    33 * Plugin Name: MJC Designs AI Design Assistant for Bricks Builder
    44 * 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.3
     5 * Version: 1.1.4
    66 * Author: MJC Designs
    77 * Requires at least: 7.0
    … …  
    1818 */
    1919if ( ! defined( 'ABSPATH' ) ) { exit; }
    20 define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_VERSION', '1.1.3' );
     20define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_VERSION', '1.1.4' );
    2121define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_FILE', __FILE__ );
    2222define( 'MJCDESIGNS_AI_DESIGN_ASSISTANT_BRICKS_URL', plugin_dir_url( __FILE__ ) );
    … …  
    5050function mjcdesigns_ai_design_assistant_bricks_changelog() {
    5151        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.' ) ),
    5253                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.' ) ),
    5354                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  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 1.1.3
     7Stable tag: 1.1.4
    88License: GPL-2.0-or-later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    9595
    9696== 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.
    97101
    98102= 1.1.3 =
Note: See TracChangeset for help on using the changeset viewer.