v0.3.0 🐋
github-actions
released this
18 Oct 10:34
·
1407 commits
to refs/heads/main
since this release
v0.3.0 is a milestone of Starwhale, it is ready for public review.
🧭 Major features and enhancements
- feat(dataset): support user-raw data format type for dataset (#918) @tianweidut
- feat(datastore): add write-ahead log for data store (#935) @xuchuan
- feat(datastore): data store server naive implementation (#900) @xuchuan
- refactor(dataset): dataset meets datastore (#903) @tianweidut
- feat(job): custom job scheduler (#880) @goldenxinxing
- example(example):add custom mnist example (#1301) @goldenxinxing
- feat(datastore): support complex column types (#1277) @xuchuan
- feat(test):add e2e test for client cmd (#1199) @goldenxinxing
- enhance(sdk): export starwhale package functions, classes, and consts directly (#1269) @tianweidut
- feat(console): role privilege component (#1246) @waynelwz
- example: refactor text classification for ag_news dataset (#1189) @tianweidut
- feat(job): tune eval info classification UI for standalone (#1219) @tianweidut
- example: refactor PennFudanPed example with new API (#1167) @tianweidut
- example: refactor cifar10 example (#1177) @tianweidut
- example: refactor nmt example (#1196) @tianweidut
- example: refactor speech command example (#1187) @tianweidut
- feat(console): viewer with segment/bbox/audio/text (#1202) @waynelwz
- feat(controller): support aliyun oss (#1157) @jialeicui
- feat(controller): support version alias for model/dataset/runtime (#1186) @dreamlandliu
- feat(datastore): support custom object type by @xuchuan in #1126
- feat(console): datastore type js SDK (#1102) @waynelwz
- refactor(bootstrap): bye bootstrap (#968) @tianweidut
- feat(console): refactor dataset/eval by datastore API (#1055) @waynelwz
- feat(console): dataset viewer for mnist bytes (#1036) @waynelwz
- feat(dataset): add
swcli dataset diff
command (#1051) @tianweidut - feat(dataset): standalone simple object store for dataset versioning (#971) @tianweidut
- feat(dataset): support
Link
type for dataset (#944) @tianweidut - feat(dataset): support
swcli dataset summary
command (#916) @tianweidut - feat(controller): support resource pool (#961) @jialeicui
- feat(controller): support dataset copy (#922) @anda-ren
- feat(controller): add new job impl for controller (#907) @goldenxinxing
- feat(console): support selecting resource pool when creating job (#985) @jialeicui
- feat(console): support sign up with a third-party account (#911) @jialeicui
- feat(console): log in with third-party account (#914) @jialeicui
- enhance(console) move webpack to vite, new layout (#926) @waynelwz
🧮 More features and enhancements
- enhance(console): evaluation result with all store tables (#1241) @waynelwz
- enhance(job): refactor sw-docker-entrypiont with split swmp and swrt workdir (#1293) @tianweidut
- enhance(controller): make init container compatible with both minio and aliyun oss (#890) @anda-ren
- enhance(dataset): add X-SW-UPLOAD-DATA-URI header for dataset copy (#928) @tianweidut
- enhance(dataset): tune dataset meta schema fields with swds_bin_offset and swds_bin_size (#1037) @tianweidut
- enhance(dataset): tune s3 file read return type as bytes type (#1040) @tianweidut
- enhance(datastore): add more log for remote data store table update (#1071) @tianweidut
- enhance(datastore): support
SW_OBJECT_STORE_KEY_PREFIX
env to unify dataset process (#917) @tianweidut - enhance(datastore): support keepNone in query (#1054) @xuchuan
- enhance(datastore): support raw result output for query and scan (#1079) @xuchuan
- enhance(datastore): tune TableWriter run thread exception handler (#1080) @tianweidut
- enhance(datastore): tune datastore storage dir by swcli config (#902) @tianweidut
- enhance(docker): tune sw-docker-entrypoint for debug (#1068) @tianweidut
- enhance(job): simplify job eval cmd (#956) @goldenxinxing
- enhance(sdk): set label str type and update mnist example (#1024) @tianweidut
- feat(console): new layout and new login page (#898) @waynelwz
- feat(console): new overview page & refactor auth (#933) @waynelwz
- feat(console): new version project creating modal (#901) @jialeicui
- feat(console): owner and description of the project (#905) @dreamlandliu
- feat(console): privacy of project & project overview statistics (#947) @dreamlandliu
- feat(console): support email register (#921) @jialeicui
- feat(console): support resetting password via email (#930) @jialeicui
- feat(controller): create a user with password and salt (#1090) @dreamlandliu
- feat(controller): get resource pools api (#978) @jialeicui
- feat(controller): Support link auth in controller (#999) @anda-ren
- feat(controller): make controller dataset schema free (#1034) @anda-ren
- feat(controller): populate runtime image to task (#1038) @anda-ren
- feat(controller): support delayed deletion for failed tasks (#1002) @jialeicui
- feat(controller): support new job/dataset/datastore/runtime (#969) @goldenxinxing
- feat(dataset): support dataset build to use the specific runtime environment with
--runtime
argument (#1062) @tianweidut - feat(dataset): support dataset copy with .auth_env file (#959) @tianweidut
- feat(dataset): support dataset copy with datastore meta load/dump (#915) @tianweidut
- feat(dataset): support dataset data append-only mode (#1004) @tianweidut
- feat(dataset): support dataset mime_type config (#1033) @tianweidut
- feat(datastore): support RemoteDataStore and make LocalDataStore work with multi-processing (#909) @xuchuan
- feat(datastore): do not compress write-ahead log file in case compression fails (#992) @xuchuan
- feat(model): support
--runtime
argument for model build and auto restore runtime (#1064) @tianweidut - refactor(client): change misleading fuse to
LocalFS
(#963) @tianweidut - refactor(client): replace object asdict method with ASDictMixin class (#1041) @tianweidut
- refactor(console): dataset ui (#955) @waynelwz
- refactor(controller): clean controller legacy code (#1081) @anda-ren
- refactor(controller): modify parameter of token getter from userName to userId (#904) @anda-ren
- refactor(dataset): tune dataset code organization (#966) @tianweidut
- refactor(controller): clean k8s task scheduler code (#1092) @anda-ren
- refactor(client): job scheduler (#1042) @goldenxinxing
- enhance(client): add http_retry decorator (#1104) @tianweidut
- enhance(datastore): make scan atomic (#1119) @xuchuan
- feat(console): support runtime revert (#1108) @waynelwz
- feat(datastore): support list tables by @xuchuan in #1135
- chore(datastore): allow nonexisting table when query or scan by @jialeicui in #1128
- chore(controller): make database name configurable by @jialeicui in #1133
- feat(client):history cmd support json format (#1200) @goldenxinxing
- feat(console): support fullscreen & card layout (#1174) @waynelwz
- feat(dataset): add mask propteries for Dataset Image type (#1225) @tianweidut
- feat(console): add job actions (#1220) @waynelwz
- feat(console): support default view with all runs (#1233) @waynelwz
- feat(client): support auto-fast-tag for model/dataset/runtime (#1203) @tianweidut
- enhance(console): support getting token for swcli login (#1238) @jialeicui
- enhance(client): add only_standalone decorator for cli view (#1258) @tianweidut
- enhance(client): tune model/dataset/model not-found info output (#1259) @tianweidut
- enhance(controller): tune imagePullPolicy for worker container (#1257) @anda-ren
- feat(client): support force remove for model/dataset/runtime/eval (#1261) @tianweidut
- feat(controller): add file system support for StorageAccessService by @xuchuan in #1127
- example: speech commands dataset support remote link (#1287) @tianweidut
- feat: add system setting API (#1328) @anda-ren
- doc: add guides zh-docs (#1336) @tianweidut
- doc: add python SDK zh-doc (#1333) @tianweidut
- doc: update zh-doc for example and cli (#1304) @tianweidut
- chore(client): support specifying docker image env in runtime.yaml (#1386) @jialeicui
- chore(client): use sys.ver when python version not specified in runtime.yaml (#1338) @jialeicui
- enhance(console): make dag layout fitable (#1326) @waynelwz
- feat(console): job run with multi task config & yaml editor (#1310) @waynelwz
- feat(console): show version / update setting page (#1319) @waynelwz
- feat(console): system settings config (#1329) @waynelwz
- feat(controller): support realtime log (#1316) @jialeicui
- fix(client):add step scheduler for eval (#1318) @goldenxinxing
- ci: add auto publish script (#1286) @anda-ren
- enhance(console): version selector with alias/duration locals (#1296) @waynelwz
- optimize: dag/eva layout/table render (#1303) @waynelwz
- chore(controller): controller and mysql use utc time (#1263) @jialeicui
- enhance(example): tune pfp example ppl results (#1270) @tianweidut
- enhance(console): eval result with summary and add alias support (#1275) @waynelwz
- feat(controller): add job status to evaluation summary (#1273) @dreamlandliu
- feat(controller): show version in the controller
- feat(controller): add system role and project roles in the response of getting current user (#1271) @dreamlandliu
- refactor(controller): refactor storage env related code (#1249) @anda-ren
- enhance(console): match with client as_mask (#1210) @waynelwz
- enhance(console): use name as list column (#1214) @waynelwz
- chore(controller): use static constants instead of enum in order to support future complex types (#1184) @xuchuan
- chore(datastore): make ObjectStore a proxy of StorageAccessService (#1170) @xuchuan
- chore(datastore): reduce memory usage by using schema name as the key… (#1134) @xuchuan
- chore(datastore): use explicit typing in the query instead of guessing type from actual column value (#1195) @xuchuan
- feat(dataset): support annotations and data type for dataset (#1130) @tianweidut
- ci(ut-controller): codecov report for java (#1123) @anda-ren
- enhance(controller): add user name dup validation when create new user (#1088) @anda-ren
- feat(controller): user info contains email(if exists) (#1073) @dreamlandliu
🛎️ Bug fixes
- fix(test): use microsecond as name to create tmp user (#1076) @dreamlandliu
- bug(dataset): fix dataset rows diff error (#1204) @tianweidut
- fix(ci): increase minikube memory limit to 4G (#1221) @anda-ren
- fix(client):remove exit logic (#1217) @goldenxinxing
- fix(console): #1139 owner when editing project (#1213) @waynelwz
- fix(console): #1179 #1181 (#1208) @waynelwz
- fix(controller): can not work with minio when disabling the chunked encoding config (#1224) @jialeicui
- fix(dataset): support link type reflect (#1276) @tianweidut
- fix(client): terminal execute process on failure (#1349) @goldenxinxing
- fix(client): unit test works with macOS (#1351) @jialeicui
- fix(controller): fix job status is unknown occasionally (#1347) @anda-ren
- fix(docker): add python-dev in base image (#1352) @jialeicui
- bug(client): fix pathlib.unlink missing_ok argument error in python3.7 (#1342) @tianweidut
- chore(client): make client ut stable (#1337) @jialeicui
- fix(evaluation):add request and limit for step (#1335) @goldenxinxing
- fix(console): change token key in URL param (#1309) @jialeicui
- fix(controller): add unique index on project name (#1272) @dreamlandliu
- fix(controller): delay deletion of the failed job now works (#1285) @jialeicui
- fix(controller): untar error at job container (#1294) @goldenxinxing
- fix(controller): set datastore api param 'ignoreNonExistingTable'=true (#1297) @goldenxinxing
- fix(controller): split dir for swmp and swrt (#1292) @goldenxinxing
- bug(runtime): fix dockerize tag tuple typo (#1251) @tianweidut
- fix(controller): oss list all keys (#1256) @jialeicui
- fix(controller): the project description cannot be set to empty (#1268) @dreamlandliu
- fix(client):remove base64 encode/decode ppl result (#1252) @goldenxinxing
- fix(controller): fix gpu failure (#1253) @anda-ren
- bug(client): fix model/dataset/runtime info command (#1242) @tianweidut
- bug(client): fix datastore atexit dump test error (#1236) @tianweidut
- fix(controller): dataset does not show when using aliyun oss (#1240) @jialeicui
- fix(controller): guest user has permission to see the resource in the dataset (#1244) @jialeicui
- fix(datastore): fix copyTo/setBytes function of SwByteBuffer (#1232) @jialeicui
- fix(controller): show a security message in English (#1218) @dreamlandliu
- fix(datastore): can not load wal after restart (#1223) @jialeicui
- fix(datastore): datastore table list out of bound error when invoking scan API (#1231) @goldenxinxing
- test(controller): add unit tests (#1222) @dreamlandliu
- fix(client): add the label for the container and cancel by label (#1172) @goldenxinxing
- fix(client):exit error code when failed (#1192) @goldenxinxing
- fix(client): task failed but status is a success (#1194) @goldenxinxing
- fix(console): #1140 list not refresh after add (#1175) @waynelwz
- fix(console): can not reset password (#1150) @jialeicui
- fix(controller): rename job dataset mapper name (#1153) @goldenxinxing
- fix(controller): sql syntax error of list object counts (#1152) @dreamlandliu
- fix(controller): try to fix no cmp log bug (#1163) @anda-ren
- fix(controller): use type string name other than category (#1191) @jialeicui
- fix(datastore): add ignoreNonExistingTable option for scan table (#1154) @jialeicui
- fix(docker): fix jar building after adding java.header for checkstyle (#1148) @jialeicui
- fix(controller): Change the field of task table (#1173) @anda-ren
- fix(console): edit project using PUT method in overview page (#1101) @jialeicui
- fix(model): eval cmd bug (#949) @goldenxinxing
- fix(client): cmp results use multi table in datastore (#1030) @goldenxinxing
- fix(client): dataset copy error when the current instance is not local (#1091) @goldenxinxing
- fix(client): fix wrong uri of head request (#899) @jialeicui
- fix(client): support docker run mode at standalone (#1083) @goldenxinxing
- fix(client):move auc to new table (#1048) @goldenxinxing
- fix(console): keep state unique without local persist (#936) @waynelwz
- fix(console): fix bug & add pytest for project api (#970) @dreamlandliu
- fix(console): new password input disabled when the user changes password (#894) @jialeicui
- fix(controller): add alter script for job (#913) @goldenxinxing
- fix(controller): dataset upload issues (#1007) @jialeicui
- fix(controller): do not cache unfinished evaluation (#1074) @jialeicui
- fix(controller): evaluation counts include all of jobs (#1069) @dreamlandliu
- fix(controller): exception that occurs when the register_info does not exist (#1082) @dreamlandliu
- fix(controller): fix dataset link auth error (#1013) @anda-ren
- fix(controller): fix dataset uri download error (#1028) @anda-ren
- fix(controller): fix dataset/model copy error (#1014) @anda-ren
- fix(controller): fix integeration test bugs (#1025) @anda-ren
- fix(controller): fix integration test error (#1049) @anda-ren
- fix(controller): fix log missing bug (#1045) @anda-ren
- fix(controller): fix log overwrite error (#1058) @anda-ren
- fix(controller): fix the problem of generating empty WAL files when DataStore uses object storage (#1029) @jialeicui
- fix(controller): fix wal init error (#1060) @anda-ren
- fix(controller): flyway not support mysql8.0 (#1003) @goldenxinxing
- fix(controller): job list bug (#1008) @goldenxinxing
- fix(controller): make resource pool feature compatible with the old data (#986) @jialeicui
- fix(controller): prevent losing data after finding the eval_jobs.yaml file (#1010) @jialeicui
- fix(controller): project maintainer/guest can get the role list (#1067) @dreamlandliu
- fix(controller): resolve env overwritten (#1019) @jialeicui
- fix(controller): tune step trigger condition (#1047) @goldenxinxing
- fix(controller): use the manifest field as the runtime image (#1046) @jialeicui
- fix(controller): verify object id when converting object URL (#1050) @dreamlandliu
- fix(controller):image name typo (#1012) @goldenxinxing
- fix(dataset): add default s3 region for s3 link auth (#1011) @tianweidut
- fix(datastore): add retrying to WAL reading (#1053) @xuchuan
- fix(datastore): close inputstream after using s3.get (#1044) @jialeicui
- fix(datastore): keep retrying to write WAL even if terminated (#1052) @xuchuan
- fix(datastore):revert datastore exit logic (#1096) @goldenxinxing
- fix(datastore):uniform column name pattern (#1077) @goldenxinxing
- fix(docker) :entry point typo (#1066) @goldenxinxing
- fix(docker): change entrypoint of starwhale from swmp to swmp/src (#1032) @jialeicui
- fix(docker): entrypoint default value format (#1018) @jialeicui
- fix(docker): fix wrong python version string parsed by awk (#1075) @jialeicui
🌱 Small bug fixes, doc updates, and add tests
- fix(example): use new version swcli in mnist demo (#1084) @jialeicui
- fix(controller): mapper name error with Upper case (#1151) @goldenxinxing
- fix(controller): fix e2e failing (#1201) @anda-ren
- fix(controller): remove duplicate mapper file (#1149) @jialeicui
- enhance(controller): data provider in job support virtual host path (#1182) @jialeicui
- enhance(controller): support virtual host path configuration (#1178) @jialeicui
- enhance(controller): use s3 multipart upload for huge file (#1158) @xuchuan
- enhance(datastore): compatible with ali oss (#1132) @jialeicui
- chore(controller): add test for JobMapper,JobSwdsVersionMapper,ProjectMapper (#1235) @anda-ren
- chore(client): add ut for client runtime (#1230) @tianweidut
- chore(console): multi optimizations of ui and interactive (#1262) @waynelwz
- ci: local e2e test (#1362) @anda-ren
- enhance(client): tune runtime process logger with the external swcli verbose setting (#1380) @tianweidut
- example: update pytorch runtime example for python3.7-3.10 (#1383) @tianweidut
- doc: add contribute docs (#1350) @tianweidut
- fix(e2e): update task num when run eval on cloud (#1345) @goldenxinxing
- bug(client): fix mypy exclude typo and some code lint error (#1343) @tianweidut
- chore: thin server base image size (#1339) @anda-ren
- doc(eval): update eval doc (#1340) @goldenxinxing
- test(controller): unit test for bundle/runtime/swmp/swds managers and services and fix some bugs (#1323) @dreamlandliu
- feat(console): multi of tiny update, locales/iconfont/evaluation images, etc (#1315) @waynelwz
- chore(console): interactive optimize (#1334) @waynelwz
- chore(controller): add dev info to pod label (#1307) @jialeicui
- fix(console): remove tsc from package (#1331) @jialeicui
- fix(console): some button text capitalization (#1317) @xuchuan
- fix(console): update runtime info after selection changes (#1324) @jialeicui
- fix(e2e):add memory for e2e (#1321) @goldenxinxing
- refactor: make step config available for UI (#1308) @anda-ren
- update(console): logo (#1314) @waynelwz
- chore(ci): force config python3.10 micro version for client ci (#1305) @tianweidut
- chore(controller): make host path for pip cache optional (#1306) @jialeicui
- ci: set fixed python3.10 version to workaround mypy error (#1298) @tianweidut
- test(controller): unit test for dataset and runtime controller (#1299) @dreamlandliu
- chore(dataset): refactor dataset process name to handler (#1278) @tianweidut
- chore(example): upgrade pytorch runtime starwhale version (#1282) @tianweidut
- chore(model): refactor model ppl to handler (#1279) @tianweidut
- refactor(console): combine systemRole & projectRole in current user (#1288) @waynelwz
- test(controller): unit test for swmp controller and converter (#1290) @dreamlandliu
- refactor(datastore): remove wrapper project and eval_version useless env (#1274) @tianweidut
- enhance(example): update example code with device converter (#1264) @tianweidut
- enhance(runtime): runtime quickstart will create workdir automatically (#1254) @tianweidut
- feat(console): #1171 component with privilege (#1260) @waynelwz
- chore(example): upgrade pytorch runtime dependencies (#1250) @tianweidut
- test(controller): add unit tests (#1234) @dreamlandliu
- fix(client): fix dataset size info in cloud (#1237) @jialeicui
- fix(client): raise exception when error (#1248) @goldenxinxing
- fix(client):job info error at cloud instance (#1226) @goldenxinxing
- chore(ci): alter e2e trigger condition (#1206) @anda-ren
- chore(controller): add UT for K8S related code (#1216) @anda-ren
- chore(controller): rename Test** to **Test (#1207) @anda-ren
- chroe(ci): remove e2e condition of filter (#1209) @anda-ren
- chore(client):Remove redundant URI parse logic (#1145) @goldenxinxing
- chore(controller): add java checkstyle (#1146) @xuchuan
- chore(controller): add mybatis test framework (#1183) @anda-ren
- chore(controller): add test for some mappers (#1197) @anda-ren
- chore(controller): add unit test for StorageAccessServiceS3 (#1155) @xuchuan
- chore(controller): make controller UT report more accurate (#1185) @anda-ren
- chore(deploy): add storage type in config (#1193) @jialeicui
- ci(e2e): restore broken e2e test (#1131) @anda-ren
- ut(controller): add unit test for bug 1164 (#1169) @anda-ren
- test(controller): add UT, remove wal from jacoco report, adjust UT ci (#1147) @anda-ren
- test(controller): unit test for project classes and some tiny change (#1137) @dreamlandliu
- test(controller): unit test for user classes and some tiny change (#1159) @dreamlandliu
- test(controller): unit tests and some tiny changes (#1176) @dreamlandliu
- fix(controller): fix bug with a syntax error in MySQL by @dreamlandliu in #1129
- chore(console): no error message when no evaluation result by @jialeicui in #1144
- bug(client): fix model eval info output (#1110) @goldenxinxing
- chore(console): fix descendant dom warning (#1100) @jialeicui
- doc: update cov badge for readme (#1094) @tianweidut
- fix(console): Member button should go to Overview page (#1124) @waynelwz
- fix(console): model/dataset/runtime revert (#1112) @waynelwz
- fix(console): password input tabindex to -1 (#1125) @waynelwz
- fix(console): prevent extra interceptors in strict mode (#1122) @waynelwz
- fix(controller): fix bug of reverting version - add version_order field for version history (#1120) @dreamlandliu
- fix(controller): fix flyway sql for version order (#1121) @dreamlandliu
- fix(controller): fix task start time null bug (#1111) @anda-ren
- fix(controller): try to fix wal ut TempDir not deleted error (#1113) @anda-ren
- refactor(controller): remove email field of user (#1107) @anda-ren
- refactor(controller): rename manifest field of runtime to image (#1105) @anda-ren
- refactor(controller): the versionUrl is required for revert requests (#1109) @dreamlandliu
- test(controller): add pytest for management of role (#991) @dreamlandliu
- test(controller): pytest for role permission apis (#1006) @dreamlandliu
- test(controller): pytest for user api (#1017) @dreamlandliu
- update(console): project editing api (#984) @waynelwz
- fix(sdk): single execute status bug (#1085) @goldenxinxing
- fix(sdk): single task execute status bug again (#1087) @goldenxinxing
- fix(sdk): task execute at cloud store failed (#1070) @goldenxinxing
- fix(ci): fix auth token issue in the pull request (#1078) @jialeicui
- fix(ci): js heap out of memory (#998) @goldenxinxing
- feat(client): add SW_TOKEN env for instance_uri sw_token (#1016) @tianweidut
- feat(client): add --token argument for swcli instance login command (#895) @tianweidut
- example: update example for NumPy dependencies (#1021) @tianweidut
- chore(deploy): inject instance URL for controller (#1026) @jialeicui
- chore(deploy): remove useless result-uploader container (#1043) @jialeicui
- chore(docker): optimize docker build ppl (#1056) @jialeicui
- ci(datastore): fix datastore test for scantable (#1022) @tianweidut
- ci(standalone): replace standalone test coverage viewer with codecov (#1093) @tianweidut
- doc: enable doc i18n (#892) @tianweidut
- enhance(client): use destructor instead of atexit (#1057) @xuchuan
- chore(console): fix login route and add trigger for new token storage (#1099) @jialeicui
- chore(console): fix typos (#931) @jialeicui
- chore(console): update icon fonts (#919) @jialeicui
- chore(controller): catch exception when heading model/dataset/runtime (#1000) @dreamlandliu
- chore(controller): remove useless cmd from job template (#1023) @jialeicui
- chore(controller): use offical awscli to support arm64 arch device (#996) @jialeicui
- chore(dataset): remove dataset batch_size argument (#910) @tianweidut
- chore(dataset): remove useless dataset render-fuse-json command (#954) @tianweidut
- chore(dataset): remove useless mode field in dataset.yaml (#993) @tianweidut
- chore(chart): support creating PV automatically for development (#965) @jialeicui
- chore(client): add typing hint for python lambda (#945) @tianweidut
- chore(client): remove deprecated abstractproperty (#927) @tianweidut
- bug(dataset): fix dataset label size calculate (#1027) @tianweidut
- bug(dataset): fix ppl loader data encode typo (#1039) @tianweidut
- bug(datastore): fix datastore resp format typo (#1020) @tianweidut
- bug(datastore): fix scan table path argument error (#908) @tianweidut
- ci(example): add lint for example code (#1289) @tianweidut
⚙️ Who Contributes
@anda-ren, @dreamlandliu, @goldenxinxing, @jialeicui, @tianweidut, @waynelwz, and @xuchuan