dsh-piggy 0.31.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/CHANGELOG.md +216 -8
  2. package/LICENSE-noto-emoji.txt +224 -0
  3. package/README.md +53 -19
  4. package/THIRD-PARTY.md +14 -6
  5. package/assets/PROVENANCE.md +17 -0
  6. package/assets/piggy-emoji.woff2 +0 -0
  7. package/assets/pigs/PROVENANCE.md +13 -0
  8. package/assets/pigs/badges/badge-pig-blindbox-first.png +0 -0
  9. package/assets/pigs/badges/badge-pig-blindbox-six.png +0 -0
  10. package/assets/pigs/badges/badge-pig-blindbox-ten.png +0 -0
  11. package/assets/pigs/badges/badge-pig-clean-ten.png +0 -0
  12. package/assets/pigs/badges/badge-pig-devil.png +0 -0
  13. package/assets/pigs/badges/badge-pig-farm-first.png +0 -0
  14. package/assets/pigs/badges/badge-pig-farm-five.png +0 -0
  15. package/assets/pigs/badges/badge-pig-farm-ten.png +0 -0
  16. package/assets/pigs/badges/badge-pig-first-class.png +0 -0
  17. package/assets/pigs/badges/badge-pig-first-fish.png +0 -0
  18. package/assets/pigs/badges/badge-pig-first-job.png +0 -0
  19. package/assets/pigs/badges/badge-pig-first-meal.png +0 -0
  20. package/assets/pigs/badges/badge-pig-first-trip.png +0 -0
  21. package/assets/pigs/badges/badge-pig-fish-five.png +0 -0
  22. package/assets/pigs/badges/badge-pig-gacha-first.png +0 -0
  23. package/assets/pigs/badges/badge-pig-gacha-gold.png +0 -0
  24. package/assets/pigs/badges/badge-pig-gacha-machines.png +0 -0
  25. package/assets/pigs/badges/badge-pig-grown-up.png +0 -0
  26. package/assets/pigs/badges/badge-pig-jobs-hundred.png +0 -0
  27. package/assets/pigs/badges/badge-pig-jobs-ten.png +0 -0
  28. package/assets/pigs/badges/badge-pig-king.png +0 -0
  29. package/assets/pigs/badges/badge-pig-mine-deep.png +0 -0
  30. package/assets/pigs/badges/badge-pig-mine-first.png +0 -0
  31. package/assets/pigs/badges/badge-pig-mine-fossils.png +0 -0
  32. package/assets/pigs/badges/badge-pig-pet-hundred.png +0 -0
  33. package/assets/pigs/badges/badge-pig-play-twenty.png +0 -0
  34. package/assets/pigs/badges/badge-pig-souvenirs-three.png +0 -0
  35. package/assets/pigs/badges/badge-pig-trips-ten.png +0 -0
  36. package/assets/pigs/base/elder/idle.png +0 -0
  37. package/assets/pigs/base/piglet/bathe.png +0 -0
  38. package/assets/pigs/base/piglet/blink.png +0 -0
  39. package/assets/pigs/base/piglet/eat.png +0 -0
  40. package/assets/pigs/base/piglet/idle.png +0 -0
  41. package/assets/pigs/base/piglet/play.png +0 -0
  42. package/assets/pigs/base/piglet/shy-pet.png +0 -0
  43. package/assets/pigs/base/piglet/sleep.png +0 -0
  44. package/assets/pigs/base/piglet/work.png +0 -0
  45. package/assets/pigs/feedback/PROVENANCE.md +17 -0
  46. package/assets/pigs/feedback/README.md +13 -0
  47. package/assets/pigs/feedback/allergy.png +0 -0
  48. package/assets/pigs/feedback/birthday.png +0 -0
  49. package/assets/pigs/feedback/collection-badge.png +0 -0
  50. package/assets/pigs/feedback/collection-bubbles.png +0 -0
  51. package/assets/pigs/feedback/collection-cage.png +0 -0
  52. package/assets/pigs/feedback/collection-check.png +0 -0
  53. package/assets/pigs/feedback/collection-chicken.png +0 -0
  54. package/assets/pigs/feedback/collection-courier.png +0 -0
  55. package/assets/pigs/feedback/collection-fever.png +0 -0
  56. package/assets/pigs/feedback/collection-fitness.png +0 -0
  57. package/assets/pigs/feedback/collection-letter.png +0 -0
  58. package/assets/pigs/feedback/collection-mosquito.png +0 -0
  59. package/assets/pigs/feedback/collection-scallion.png +0 -0
  60. package/assets/pigs/feedback/collection-snack.png +0 -0
  61. package/assets/pigs/feedback/collection-soup.png +0 -0
  62. package/assets/pigs/feedback/collection-stack.png +0 -0
  63. package/assets/pigs/feedback/collection-taro.png +0 -0
  64. package/assets/pigs/feedback/collection-throne.png +0 -0
  65. package/assets/pigs/feedback/courier.png +0 -0
  66. package/assets/pigs/feedback/death-day.png +0 -0
  67. package/assets/pigs/feedback/faint.png +0 -0
  68. package/assets/pigs/feedback/fishing.png +0 -0
  69. package/assets/pigs/feedback/ghost-grave.png +0 -0
  70. package/assets/pigs/feedback/hungry.png +0 -0
  71. package/assets/pigs/feedback/lie-flat.png +0 -0
  72. package/assets/pigs/feedback/music-earbuds.png +0 -0
  73. package/assets/pigs/feedback/music-headphones-v2.png +0 -0
  74. package/assets/pigs/feedback/music-rainbow.png +0 -0
  75. package/assets/pigs/feedback/painting.png +0 -0
  76. package/assets/pigs/feedback/recruit.png +0 -0
  77. package/assets/pigs/feedback/runny-nose.png +0 -0
  78. package/assets/pigs/feedback/sleep-cloud.png +0 -0
  79. package/assets/pigs/feedback/study-book.png +0 -0
  80. package/assets/pigs/feedback/study-determined.png +0 -0
  81. package/assets/pigs/feedback/study-pink-book.png +0 -0
  82. package/assets/pigs/feedback/suspended.png +0 -0
  83. package/assets/pigs/feedback/turning.png +0 -0
  84. package/assets/pigs/feedback/twitch.png +0 -0
  85. package/assets/pigs/forms/pig-devil/bathe.png +0 -0
  86. package/assets/pigs/forms/pig-devil/eat.png +0 -0
  87. package/assets/pigs/forms/pig-devil/fly.png +0 -0
  88. package/assets/pigs/forms/pig-devil/idle.png +0 -0
  89. package/assets/pigs/forms/pig-devil/pet.png +0 -0
  90. package/assets/pigs/forms/pig-devil/play.png +0 -0
  91. package/assets/pigs/forms/pig-devil/relaxed.png +0 -0
  92. package/assets/pigs/forms/pig-devil/sleep.png +0 -0
  93. package/assets/pigs/forms/pig-devil/study.png +0 -0
  94. package/assets/pigs/forms/pig-devil/trip.png +0 -0
  95. package/assets/pigs/forms/pig-devil/work.png +0 -0
  96. package/assets/pigs/forms/pig-fat/bathe.png +0 -0
  97. package/assets/pigs/forms/pig-fat/eat.png +0 -0
  98. package/assets/pigs/forms/pig-fat/idle.png +0 -0
  99. package/assets/pigs/forms/pig-fat/pet.png +0 -0
  100. package/assets/pigs/forms/pig-fat/play.png +0 -0
  101. package/assets/pigs/forms/pig-fat/relaxed.png +0 -0
  102. package/assets/pigs/forms/pig-fat/sleep.png +0 -0
  103. package/assets/pigs/forms/pig-fat/study.png +0 -0
  104. package/assets/pigs/forms/pig-fat/trip.png +0 -0
  105. package/assets/pigs/forms/pig-fat/work.png +0 -0
  106. package/assets/pigs/forms/pig-king/bathe.png +0 -0
  107. package/assets/pigs/forms/pig-king/eat.png +0 -0
  108. package/assets/pigs/forms/pig-king/idle.png +0 -0
  109. package/assets/pigs/forms/pig-king/pet.png +0 -0
  110. package/assets/pigs/forms/pig-king/play.png +0 -0
  111. package/assets/pigs/forms/pig-king/relaxed.png +0 -0
  112. package/assets/pigs/forms/pig-king/sleep.png +0 -0
  113. package/assets/pigs/forms/pig-king/study.png +0 -0
  114. package/assets/pigs/forms/pig-king/trip.png +0 -0
  115. package/assets/pigs/forms/pig-king/work.png +0 -0
  116. package/assets/pigs/forms/pig-round/bathe.png +0 -0
  117. package/assets/pigs/forms/pig-round/eat.png +0 -0
  118. package/assets/pigs/forms/pig-round/idle.png +0 -0
  119. package/assets/pigs/forms/pig-round/pet.png +0 -0
  120. package/assets/pigs/forms/pig-round/play.png +0 -0
  121. package/assets/pigs/forms/pig-round/relaxed.png +0 -0
  122. package/assets/pigs/forms/pig-round/sleep.png +0 -0
  123. package/assets/pigs/forms/pig-round/study.png +0 -0
  124. package/assets/pigs/forms/pig-round/trip.png +0 -0
  125. package/assets/pigs/forms/pig-round/work.png +0 -0
  126. package/assets/pigs/manifest.json +5311 -0
  127. package/assets/pigs/skins/career-astronaut/bathe.png +0 -0
  128. package/assets/pigs/skins/career-astronaut/eat.png +0 -0
  129. package/assets/pigs/skins/career-astronaut/idle.png +0 -0
  130. package/assets/pigs/skins/career-astronaut/pet.png +0 -0
  131. package/assets/pigs/skins/career-astronaut/play.png +0 -0
  132. package/assets/pigs/skins/career-astronaut/relaxed.png +0 -0
  133. package/assets/pigs/skins/career-astronaut/sleep.png +0 -0
  134. package/assets/pigs/skins/career-astronaut/study.png +0 -0
  135. package/assets/pigs/skins/career-astronaut/trip.png +0 -0
  136. package/assets/pigs/skins/career-astronaut/work.png +0 -0
  137. package/assets/pigs/skins/career-chef/bathe.png +0 -0
  138. package/assets/pigs/skins/career-chef/eat.png +0 -0
  139. package/assets/pigs/skins/career-chef/idle.png +0 -0
  140. package/assets/pigs/skins/career-chef/pet.png +0 -0
  141. package/assets/pigs/skins/career-chef/play.png +0 -0
  142. package/assets/pigs/skins/career-chef/relaxed.png +0 -0
  143. package/assets/pigs/skins/career-chef/sleep.png +0 -0
  144. package/assets/pigs/skins/career-chef/study.png +0 -0
  145. package/assets/pigs/skins/career-chef/trip.png +0 -0
  146. package/assets/pigs/skins/career-chef/work.png +0 -0
  147. package/assets/pigs/skins/skin-angel/bathe.png +0 -0
  148. package/assets/pigs/skins/skin-angel/eat.png +0 -0
  149. package/assets/pigs/skins/skin-angel/idle.png +0 -0
  150. package/assets/pigs/skins/skin-angel/pet.png +0 -0
  151. package/assets/pigs/skins/skin-angel/play.png +0 -0
  152. package/assets/pigs/skins/skin-angel/relaxed.png +0 -0
  153. package/assets/pigs/skins/skin-angel/sleep.png +0 -0
  154. package/assets/pigs/skins/skin-angel/study.png +0 -0
  155. package/assets/pigs/skins/skin-angel/trip.png +0 -0
  156. package/assets/pigs/skins/skin-angel/work.png +0 -0
  157. package/assets/pigs/skins/skin-detective/bathe.png +0 -0
  158. package/assets/pigs/skins/skin-detective/eat.png +0 -0
  159. package/assets/pigs/skins/skin-detective/idle.png +0 -0
  160. package/assets/pigs/skins/skin-detective/pet.png +0 -0
  161. package/assets/pigs/skins/skin-detective/play.png +0 -0
  162. package/assets/pigs/skins/skin-detective/relaxed.png +0 -0
  163. package/assets/pigs/skins/skin-detective/sleep.png +0 -0
  164. package/assets/pigs/skins/skin-detective/study.png +0 -0
  165. package/assets/pigs/skins/skin-detective/trip.png +0 -0
  166. package/assets/pigs/skins/skin-detective/work.png +0 -0
  167. package/assets/pigs/skins/skin-mint/bathe.png +0 -0
  168. package/assets/pigs/skins/skin-mint/eat.png +0 -0
  169. package/assets/pigs/skins/skin-mint/idle.png +0 -0
  170. package/assets/pigs/skins/skin-mint/pet.png +0 -0
  171. package/assets/pigs/skins/skin-mint/play.png +0 -0
  172. package/assets/pigs/skins/skin-mint/sleep.png +0 -0
  173. package/assets/pigs/skins/skin-mint/work.png +0 -0
  174. package/assets/pigs/skins/skin-pirate/bathe.png +0 -0
  175. package/assets/pigs/skins/skin-pirate/eat.png +0 -0
  176. package/assets/pigs/skins/skin-pirate/idle.png +0 -0
  177. package/assets/pigs/skins/skin-pirate/pet.png +0 -0
  178. package/assets/pigs/skins/skin-pirate/play.png +0 -0
  179. package/assets/pigs/skins/skin-pirate/relaxed.png +0 -0
  180. package/assets/pigs/skins/skin-pirate/sleep.png +0 -0
  181. package/assets/pigs/skins/skin-pirate/study.png +0 -0
  182. package/assets/pigs/skins/skin-pirate/trip.png +0 -0
  183. package/assets/pigs/skins/skin-pirate/work.png +0 -0
  184. package/assets/pigs/skins/skin-wizard/bathe.png +0 -0
  185. package/assets/pigs/skins/skin-wizard/eat.png +0 -0
  186. package/assets/pigs/skins/skin-wizard/idle.png +0 -0
  187. package/assets/pigs/skins/skin-wizard/pet.png +0 -0
  188. package/assets/pigs/skins/skin-wizard/play.png +0 -0
  189. package/assets/pigs/skins/skin-wizard/relaxed.png +0 -0
  190. package/assets/pigs/skins/skin-wizard/sleep.png +0 -0
  191. package/assets/pigs/skins/skin-wizard/study.png +0 -0
  192. package/assets/pigs/skins/skin-wizard/trip.png +0 -0
  193. package/assets/pigs/skins/skin-wizard/work.png +0 -0
  194. package/channel.js +22 -0
  195. package/client.js +7444 -4250
  196. package/environment.js +41 -0
  197. package/index.js +8 -0
  198. package/package.json +5 -2
  199. package/packages/pet-core/src/core/achievements.js +100 -0
  200. package/packages/pet-core/src/core/activity.js +2 -1
  201. package/packages/pet-core/src/core/care.js +6 -0
  202. package/packages/pet-core/src/core/clock.js +51 -2
  203. package/packages/pet-core/src/core/constants.js +51 -1
  204. package/packages/pet-core/src/core/daily.js +4 -3
  205. package/packages/pet-core/src/core/diary.js +12 -3
  206. package/packages/pet-core/src/core/drops.js +1 -1
  207. package/packages/pet-core/src/core/economy.js +163 -0
  208. package/packages/pet-core/src/core/egg.js +14 -10
  209. package/packages/pet-core/src/core/extension-events.js +90 -0
  210. package/packages/pet-core/src/core/extensions.js +11 -2
  211. package/packages/pet-core/src/core/fishing-auto.js +137 -0
  212. package/packages/pet-core/src/core/fishing.js +106 -21
  213. package/packages/pet-core/src/core/growth.js +1 -1
  214. package/packages/pet-core/src/core/illness.js +84 -9
  215. package/packages/pet-core/src/core/interests.js +3 -2
  216. package/packages/pet-core/src/core/inventory.js +3 -4
  217. package/packages/pet-core/src/core/lines.js +11 -1
  218. package/packages/pet-core/src/core/migrate.js +24 -5
  219. package/packages/pet-core/src/core/offline-feed.js +160 -0
  220. package/packages/pet-core/src/core/pomodoro.js +7 -5
  221. package/packages/pet-core/src/core/profile.js +44 -3
  222. package/packages/pet-core/src/core/school.js +3 -2
  223. package/packages/pet-core/src/core/settlement.js +131 -65
  224. package/packages/pet-core/src/core/state.js +14 -1
  225. package/packages/pet-core/src/core/talk.js +11 -6
  226. package/packages/pet-core/src/core/travel.js +17 -6
  227. package/packages/pet-core/src/core/upgrades.js +10 -0
  228. package/packages/pet-core/src/core/views.js +2 -1
  229. package/packages/pet-core/src/core/wallets.js +150 -0
  230. package/packages/pet-core/src/core/work.js +9 -6
  231. package/packages/pet-core/src/core.js +14 -4
  232. package/packages/pet-core/src/data/achievements.js +26 -0
  233. package/packages/pet-core/src/data/art-assets.js +188 -0
  234. package/packages/pet-core/src/data/daily.js +2 -4
  235. package/packages/pet-core/src/data/drops.js +1 -1
  236. package/packages/pet-core/src/data/economy.js +58 -0
  237. package/packages/pet-core/src/data/extension-achievements.js +19 -0
  238. package/packages/pet-core/src/data/extension-events.js +11 -0
  239. package/packages/pet-core/src/data/extensions.js +1 -1
  240. package/packages/pet-core/src/data/fish.js +89 -17
  241. package/packages/pet-core/src/data/fishing-auto.js +22 -0
  242. package/packages/pet-core/src/data/growth.js +1 -6
  243. package/packages/pet-core/src/data/illness.js +1 -1
  244. package/packages/pet-core/src/data/jobs.js +7 -1
  245. package/packages/pet-core/src/data/life.js +2 -0
  246. package/packages/pet-core/src/data/lines-more.js +1 -1
  247. package/packages/pet-core/src/data/lines.js +1 -1
  248. package/packages/pet-core/src/data/minutes.js +2 -0
  249. package/packages/pet-core/src/data/pomodoro.js +1 -3
  250. package/packages/pet-core/src/data/school.js +1 -1
  251. package/packages/pet-core/src/data/shop.js +32 -2
  252. package/packages/pet-core/src/data/skins.js +3 -3
  253. package/packages/pet-core/src/data/travel.js +56 -1
  254. package/packages/pet-core/src/data.js +5 -0
  255. package/routes.js +119 -39
  256. package/scripts/extension-bundle.mjs +17 -0
  257. package/scripts/extension-entry.mjs +23 -16
  258. package/scripts/extension-files.mjs +17 -0
  259. package/scripts/gitee-publish.sh +125 -0
  260. package/scripts/gitee-release.mjs +90 -0
  261. package/scripts/official-extensions.mjs +17 -0
  262. package/scripts/pack-farm-fix4.py +70 -0
  263. package/scripts/pack-farm-ui.py +42 -0
  264. package/scripts/release-notes.mjs +4 -1
  265. package/scripts/scan-channel.mjs +74 -0
  266. package/scripts/set-channel.mjs +19 -0
  267. package/scripts/typecheck.mjs +3 -3
  268. package/snapshot.js +33 -33
  269. package/src/client/art-framing.js +27 -0
  270. package/src/client/art-path.js +13 -0
  271. package/src/client/art-style.js +10 -0
  272. package/src/client/art.js +116 -7
  273. package/src/client/asset-background.js +30 -0
  274. package/src/client/auto-collapse.js +3 -1
  275. package/src/client/birthday.js +47 -0
  276. package/src/client/css-achievements.js +16 -0
  277. package/src/client/css-base.js +69 -5
  278. package/src/client/css-card.js +2 -2
  279. package/src/client/css-fishing.js +8 -0
  280. package/src/client/css-tabs.js +36 -6
  281. package/src/client/css-tiles.js +11 -3
  282. package/src/client/desktop/ext-window.js +42 -0
  283. package/src/client/desktop/geometry.js +8 -38
  284. package/src/client/desktop/index.js +228 -66
  285. package/src/client/desktop/measure.js +57 -114
  286. package/src/client/desktop/panel-window.js +102 -0
  287. package/src/client/desktop/place.js +137 -76
  288. package/src/client/desktop-shell.js +11 -0
  289. package/src/client/effects.js +3 -3
  290. package/src/client/ext-apps.js +60 -3
  291. package/src/client/ext-import.js +111 -0
  292. package/src/client/extensions.js +10 -2
  293. package/src/client/feedback-art.js +85 -0
  294. package/src/client/feedback-framing.js +348 -0
  295. package/src/client/hover-restore.js +125 -0
  296. package/src/client/icon-style.js +3 -2
  297. package/src/client/index.js +38 -33
  298. package/src/client/io.js +54 -7
  299. package/src/client/journal.js +110 -0
  300. package/src/client/layout.js +8 -50
  301. package/src/client/life.js +18 -5
  302. package/src/client/log-export.js +93 -0
  303. package/src/client/milestone-notice.js +19 -0
  304. package/src/client/normalize-dex.js +31 -0
  305. package/src/client/normalize-economy.js +18 -0
  306. package/src/client/normalize-fishing.js +31 -2
  307. package/src/client/normalize.js +18 -26
  308. package/src/client/panel.js +79 -80
  309. package/src/client/pending.js +59 -0
  310. package/src/client/pig-actions.js +100 -0
  311. package/src/client/pig-size.js +24 -10
  312. package/src/client/pointer-repaint.js +40 -0
  313. package/src/client/poll-key.js +68 -0
  314. package/src/client/render-hold.js +51 -0
  315. package/src/client/scene.js +17 -2
  316. package/src/client/split.js +139 -0
  317. package/src/client/styles.js +3 -1
  318. package/src/client/tabs/achievements.js +63 -0
  319. package/src/client/tabs/bag.js +14 -1
  320. package/src/client/tabs/card.js +65 -4
  321. package/src/client/tabs/crown.js +2 -2
  322. package/src/client/tabs/dev-economy.js +41 -0
  323. package/src/client/tabs/dev.js +70 -4
  324. package/src/client/tabs/dex.js +6 -2
  325. package/src/client/tabs/extensions.js +45 -12
  326. package/src/client/tabs/fishing-fight.js +52 -23
  327. package/src/client/tabs/fishing.js +73 -7
  328. package/src/client/tabs/fullscreen.js +49 -0
  329. package/src/client/tabs/home.js +1 -1
  330. package/src/client/tabs/pomodoro.js +3 -3
  331. package/src/client/tabs/proxy.js +97 -0
  332. package/src/client/tabs/settings.js +83 -10
  333. package/src/client/tabs/skin-guide.js +23 -21
  334. package/src/client/tabs/skins.js +2 -2
  335. package/src/client/tabs/status.js +14 -2
  336. package/src/client/tabs/travel.js +2 -1
  337. package/src/client/tabs/update.js +5 -4
  338. package/src/client/tabs/work.js +6 -0
  339. package/src/client/update-notice.js +31 -5
  340. package/src/client/wallet.js +81 -0
  341. package/store/api.js +22 -2
  342. package/store/art-route.js +41 -0
  343. package/store/ext-actions.js +58 -0
  344. package/store/ext-api.js +70 -0
  345. package/store/ext-download.js +120 -0
  346. package/store/ext-files.js +97 -0
  347. package/store/ext-import-route.js +35 -0
  348. package/store/ext-import.js +117 -0
  349. package/store/ext-runtime.js +150 -87
  350. package/store/journal.js +192 -0
  351. package/store/official-extensions.json +2554 -0
  352. package/store/skin-pack.js +55 -11
  353. package/store/state-file.js +27 -9
  354. package/store.js +23 -4
  355. package/assets/career-astronaut-bathe.svg +0 -18
  356. package/assets/career-astronaut-eat.svg +0 -18
  357. package/assets/career-astronaut-pet.svg +0 -18
  358. package/assets/career-astronaut-play.svg +0 -18
  359. package/assets/career-astronaut-relaxed.svg +0 -18
  360. package/assets/career-astronaut-study.svg +0 -18
  361. package/assets/career-astronaut-trip.svg +0 -18
  362. package/assets/career-astronaut-work.svg +0 -18
  363. package/assets/career-astronaut.svg +0 -18
  364. package/assets/career-chef-bathe.svg +0 -18
  365. package/assets/career-chef-eat.svg +0 -18
  366. package/assets/career-chef-pet.svg +0 -18
  367. package/assets/career-chef-play.svg +0 -18
  368. package/assets/career-chef-relaxed.svg +0 -18
  369. package/assets/career-chef-study.svg +0 -18
  370. package/assets/career-chef-trip.svg +0 -18
  371. package/assets/career-chef-work.svg +0 -18
  372. package/assets/career-chef.svg +0 -18
  373. package/assets/elder.svg +0 -35
  374. package/assets/pig-devil-bathe.svg +0 -71
  375. package/assets/pig-devil-eat.svg +0 -61
  376. package/assets/pig-devil-fly.svg +0 -51
  377. package/assets/pig-devil-pet.svg +0 -55
  378. package/assets/pig-devil-play.svg +0 -62
  379. package/assets/pig-devil-relaxed.svg +0 -51
  380. package/assets/pig-devil-study.svg +0 -61
  381. package/assets/pig-devil-trip.svg +0 -65
  382. package/assets/pig-devil-work.svg +0 -67
  383. package/assets/pig-devil.svg +0 -51
  384. package/assets/pig-fat-bathe.svg +0 -11
  385. package/assets/pig-fat-eat.svg +0 -13
  386. package/assets/pig-fat-pet.svg +0 -11
  387. package/assets/pig-fat-play.svg +0 -11
  388. package/assets/pig-fat-relaxed.svg +0 -11
  389. package/assets/pig-fat-study.svg +0 -13
  390. package/assets/pig-fat-trip.svg +0 -13
  391. package/assets/pig-fat-work.svg +0 -13
  392. package/assets/pig-fat.svg +0 -13
  393. package/assets/pig-king-bathe.svg +0 -38
  394. package/assets/pig-king-eat.svg +0 -45
  395. package/assets/pig-king-pet.svg +0 -45
  396. package/assets/pig-king-play.svg +0 -45
  397. package/assets/pig-king-relaxed.svg +0 -56
  398. package/assets/pig-king-study.svg +0 -45
  399. package/assets/pig-king-trip.svg +0 -45
  400. package/assets/pig-king-work.svg +0 -45
  401. package/assets/pig-king.svg +0 -56
  402. package/assets/pig-round-bathe.svg +0 -11
  403. package/assets/pig-round-eat.svg +0 -11
  404. package/assets/pig-round-pet.svg +0 -11
  405. package/assets/pig-round-play.svg +0 -11
  406. package/assets/pig-round-relaxed.svg +0 -11
  407. package/assets/pig-round-study.svg +0 -11
  408. package/assets/pig-round-trip.svg +0 -11
  409. package/assets/pig-round-work.svg +0 -11
  410. package/assets/pig-round.svg +0 -13
  411. package/assets/piglet.svg +0 -30
  412. package/assets/skin-angel-bathe.svg +0 -18
  413. package/assets/skin-angel-eat.svg +0 -18
  414. package/assets/skin-angel-pet.svg +0 -18
  415. package/assets/skin-angel-play.svg +0 -18
  416. package/assets/skin-angel-relaxed.svg +0 -18
  417. package/assets/skin-angel-study.svg +0 -18
  418. package/assets/skin-angel-trip.svg +0 -18
  419. package/assets/skin-angel-work.svg +0 -18
  420. package/assets/skin-angel.svg +0 -18
  421. package/assets/skin-detective-bathe.svg +0 -18
  422. package/assets/skin-detective-eat.svg +0 -18
  423. package/assets/skin-detective-pet.svg +0 -18
  424. package/assets/skin-detective-play.svg +0 -18
  425. package/assets/skin-detective-relaxed.svg +0 -18
  426. package/assets/skin-detective-study.svg +0 -18
  427. package/assets/skin-detective-trip.svg +0 -18
  428. package/assets/skin-detective-work.svg +0 -18
  429. package/assets/skin-detective.svg +0 -18
  430. package/assets/skin-mint-bathe.svg +0 -30
  431. package/assets/skin-mint-eat.svg +0 -30
  432. package/assets/skin-mint-pet.svg +0 -30
  433. package/assets/skin-mint-play.svg +0 -30
  434. package/assets/skin-mint.svg +0 -30
  435. package/assets/skin-pirate-bathe.svg +0 -18
  436. package/assets/skin-pirate-eat.svg +0 -18
  437. package/assets/skin-pirate-pet.svg +0 -18
  438. package/assets/skin-pirate-play.svg +0 -18
  439. package/assets/skin-pirate-relaxed.svg +0 -18
  440. package/assets/skin-pirate-study.svg +0 -18
  441. package/assets/skin-pirate-trip.svg +0 -18
  442. package/assets/skin-pirate-work.svg +0 -18
  443. package/assets/skin-pirate.svg +0 -18
  444. package/assets/skin-wizard-bathe.svg +0 -18
  445. package/assets/skin-wizard-eat.svg +0 -18
  446. package/assets/skin-wizard-pet.svg +0 -18
  447. package/assets/skin-wizard-play.svg +0 -18
  448. package/assets/skin-wizard-relaxed.svg +0 -18
  449. package/assets/skin-wizard-study.svg +0 -18
  450. package/assets/skin-wizard-trip.svg +0 -18
  451. package/assets/skin-wizard-work.svg +0 -18
  452. package/assets/skin-wizard.svg +0 -18
package/CHANGELOG.md CHANGED
@@ -5,6 +5,214 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
5
5
 
6
6
  ---
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [0.37.0] — 2026-10-15 · 菜园 4.0:QQ 农场玩法、帮工、离线自动照顾(外壳 0.6.6)
11
+
12
+ ### 菜园 4.0(需要游戏 0.37.0)
13
+ - 菜园照 QQ 农场的规矩重做:29 种作物、18 块地(开局 6 块,其余是荒地,每块 10000 菜币开垦),按真实时间长,关着也照长;长的时候会长草、生虫、干旱(雨天不旱),浇水、除草、杀虫免费还加经验;产量有浮动,收完留枯苗要铲掉才能再种;南瓜、橘子、柚子能收两季,石榴、椰子三季。
14
+ - 菜园有等级:升下一级要「等级 × 100」经验,种子按等级解锁;三种肥料分别多长 2 / 3.5 / 5 小时。一键收获 / 照料 / 铲除 / 播种要先在商店买收割镰、喷雾桶、平地耙、播种器。
15
+ - 两种界面、同一份数据:面板里是**小农场**(前 6 块地 + 一个主按钮做最该做的事,后面的地用一行字报情况);点「大农场」打开**大农场**——桌面版是一扇能拉大缩小的窗口,网页版铺满页面——横版场景、18 块地斜着排、底部工具栏,点地块用手里的工具,也能用 Q/W/E/R 快捷键。大、小农场换成动森风的暖羊皮纸、薄荷按钮和花叶木纹点缀,种子袋、肥料、仓库、商店和购买框也换成同一套样式;小农场的五个工具与底部操作在窄面板里也能完整使用。
16
+ - 帮工猪管 4 / 8 / 16 块地,赚到自己种同样地数的九成(原来七成),仍是六小时收一次仓、满级每小时最多 400;只补这块地原来指定的作物,缺那种种子就停在空地并报「缺××种子」,开荒地先清理再补种(清理不给经验、不吃体力)。
17
+ - 农具档(顺手 / 轻巧 / 高效)从商店下架:3.0.0 线上买过的按买到档位累计退 **1000 / 4000 / 13000** 菜币,只退一次。
18
+ - 老存档照旧:开过的地算数;地里的作物当作长完,按原来的产量收进仓库;旧洒水器、旧肥料和买过的农具档按原价退成菜币;大水壶换成喷雾桶。
19
+ - 扩展素材不再限制图片张数和总大小,可以装下画面更丰富的扩展;每张图片仍会检查大小和完整性。扩展也能打开自己的大窗口,菜园 4.0.8 需要游戏 0.37.0。
20
+
21
+ ### 小猪
22
+ - 普通猪每 8~16 秒眨一次眼;摸猪成功后它会害羞一小会儿,切换状态、隐藏或拖动时停下。
23
+ - 小猪新增眨眼与「摸猪害羞」两张动作图(沿用 0.36.2 起的平涂无描边画风)。
24
+
25
+ ### 离开时和系统时间不对的时候
26
+ - 离线自动照顾从「只吃东西」扩到三类:脏了用一份洗浴用品、闷了拿一个玩具,都优先刚好过线又最便宜的;回来会告诉你用了什么,也写进当天日记,设置里可关。
27
+ - 系统时间被改错或对表拨回去时,猪猪原地不动:不补算、也不重复算;等时间调回来、真实时间越过原来那一点,才接着只算新增的那一段。
28
+ - 离开太久、背包里的东西吃完之后还能撑 10 天;超过 10 天生命垂危(健康只剩 1 格、不能出门),累计满 30 天才撑不住离开(用还魂丹还能救回来)。生命垂危时也能带去看医生,看诊费按同一只猪看诊次数阶梯(第 1 次免费,之后 390 / 585,第 4 次起封顶 780)。
29
+ - 一次结算最多推算到「背包能撑的天数 + 10 天」(绝对不超过 400 天),离开再久也不会一下子长几百天,更不会把面板卡住;年龄只按实际推算过的那一段增长。
30
+
31
+ ### 面板、桌面版和扩展
32
+ - 面板刷新更跟手:画面没变就不重画,菜园的悬停卡不再被抹掉;真变了再重画时也会把悬停卡补回来;按住按钮、松开、点完这一套之前不会中途换掉按住的按钮。
33
+ - 打开大农场时保留原面板,关掉大窗口焦点回到面板(需要桌面外壳 0.6.6)。网页版大农场铺满页面时不再露出面板底色;面板很矮时弹层、遮罩和购买框都不会戳出面板底边;大农场的「开垦」牌不再被旁边地块压住,点得到。
34
+ - 下载扩展遇到坏包会指出真因:单张图片太大、图片名单写坏或文件校验不符都会明确报错,不会悄悄装一个没图的扩展。
35
+ - 桌面版:小猪置顶丢了会在 3 秒内抢回来;全屏时小猪显示成什么样可以在设置里选(见下节)。
36
+
37
+ ### 全屏时隐藏小猪(需要桌面外壳 0.6.5)
38
+ - 设置新增「全屏时(玩游戏、看视频)」:**隐藏小猪**(默认)/ **照常显示**。隐藏时只看小猪所在的那块屏,有程序全屏就把猪和面板收起来,退出全屏再回来;照常显示时猪压在全屏画面上面(独占全屏的游戏系统不让任何窗口盖上去)。选择存在这台电脑上,不进存档。
39
+ - 全屏检测:Windows 用系统自带的 PowerShell 常驻一个小进程(每秒问一次前台窗口),不加新依赖;PowerShell 被禁用时设置里会说明,猪照常显示。Linux 用 xprop(Wayland 下只认得 X11 程序的全屏);macOS 全屏程序在单独的桌面空间,「照常显示」时猪跟进去。旧外壳不显示这一项。
40
+
41
+ ### 修好的问题
42
+ - 菜园扩展遇到被改坏的存档(经验值异常)不会再卡住整个菜园,等级照常算、菜照常种。
43
+ - 离开很久回来,猪猪的年龄不会再少算几天,日记也不会缺页。
44
+ - 生命垂危时原本只能干等:现在能带它去看医生,看一次就把生命值回满(第 1 次看诊免费)。
45
+ - 离开特别久(几百天)时回来快了大约 6 倍,不用再等面板卡一下。
46
+
47
+ ## [0.36.2] — 2026-10-14 · 热修:平涂小猪、离开时自动吃东西、右键更稳(外壳 0.6.5)
48
+
49
+ ### 小猪
50
+ - 小猪立绘换回旧版平涂无描边,去掉「小猪画风」设置。
51
+ - 先撤回开心、照料、闲着与旅行时的反馈图(如三只猪叠在一起那张),照常显示立绘和动作图。
52
+
53
+ ### 离开时自动吃背包里的东西
54
+ - 离开(关机、离线、很久没打开)期间,饱食掉到饿了的线时,猪猪会自己从背包吃一份食物:优先刚好吃饱又最便宜的。不吃药、还魂丹、礼物等非食物。
55
+ - 回来时冒一句「你不在的时候,猪猪自己吃了 苹果×N」,也写进当天日记;背包空了会提示。设置里可关闭,旧存档默认开启。
56
+
57
+ ### 桌面版(外壳 0.6.5)
58
+ - 启动时预先准备好面板:第一次右键马上打开;面板还在加载时再按右键不会把它关掉。
59
+ - 修复轮询刷新替换掉按下中的按钮,导致购买或设置开关偶发点了没反应。
60
+
61
+ ## [0.36.1] — 2026-10-12 · 扩展整包下载(外壳 0.6.4 不变)
62
+
63
+ ### 扩展整包下载
64
+ - 在线安装扩展改成只下一个扩展包(`.piggyext`),不再把代码和几十张图片一个个下:请求少了,国内直连更不容易半路卡住。目录里每条多了整包的地址和校验值;0.36.0 及更早的游戏照旧逐个下载,不受影响。
65
+
66
+ ## [0.36.0] — 2026-10-11 · 动森风菜园矿洞、无描边画风(外壳 0.6.4 不变)
67
+
68
+ ### 小猪画风
69
+ - 完成无黑色描边的 181 张小猪审图候选,保留原角色、耳型、动作和场景;透明 PNG 按基础、形态、皮肤、反馈、徽章分类,逐字提示词和对照总览同步。整套获用户确认后接入游戏;设置新增「无描边 / 黑色描边」,本机记住选择,桌面猪与面板同步切换。导入皮肤保持原图,两套立绘分别校准可见高度,保留原有玩法和状态优先级。
70
+ - 桌面边缘限制覆盖两套立绘的最大可见宽度,修复放大后胖猪电脑图被裁切的问题;换动作或画风仍保持位置和窗口尺寸。
71
+
72
+ ### 菜园、矿洞换成动森风画面
73
+ - 菜园、矿洞的界面换成手绘风素材:海边菜园、木框菜畦、16 种作物各 3 个生长阶段,木牌手账风的矿洞、矿石和化石都有自己的图。
74
+ - 菜园:顶上吊牌计分板放帮工,中间两列菜畦,玩家自己的猪站在旁边;底部木排四个工具一直摆着(不用再点开工具抽屉),下面是仓库、主按钮、商店。玩法和数值都没变。
75
+ - 矿洞:没挖开的格子一律是同样的岩块,矿和化石挖开才看得到;够不着的格子调暗;猪站在最后挖开的那格。
76
+ - 菜园、矿洞升 3.0.0,要游戏 0.36.0 以上。
77
+
78
+ ### 扩展可以带图片
79
+ - 扩展目录多了 `assets/`(manifest 里 `assets` 列出),在线下载、本地导入、官方校验都把图片算进去;面板里用 `app.asset(名字)` 取图,`app.pigArt()` 取玩家现在的猪图。规则见[写扩展](docs/guides/writing-extensions.md)。
80
+
81
+ ## [0.35.0] — 2026-10-10 · 经济体系、新立绘、扩展自动化(外壳 0.6.4)
82
+
83
+ ### 新立绘
84
+ - 普通猪、形态、皮肤、职业、成长阶段、动作、睡姿、不同状态的小猪和成就徽章,全部换成统一的黑色描边透明 PNG,按类型收进 `assets/pigs/`。游戏包反而小了一点。
85
+ - 打工图改成猪趴在地上敲电脑;胖猪的宽图不再被裁掉。
86
+ - 各种立绘按「猪的可见高度」统一校准,换皮肤、换形态时看起来一样大。
87
+ - 自定义皮肤包改收 PNG,制作教程和示例包跟着换;以前做的 SVG 皮肤包照样能导入,已经装过的照常显示。
88
+
89
+ ### 经济
90
+ - **不再限制每天玩几次**:番茄钟每个都给奖励;在线礼包每在线 1 小时一个、不设上限;猪在打工、上学、旅行时也能手动钓鱼。
91
+ - 金币的进出都按来源记账,调试页「经济」能看钱从哪来、花到哪去([设计](docs/design/economy.md))。
92
+ - **扩展有自己的钱**:菜币、矿石币、资质凭证……按扩展定的汇率跟金币互换(换成金币不收费,用金币买多收 5%);删掉扩展时剩下的钱自动换成金币。背包里新增「钱包」页。
93
+ - 各玩法的时薪都按收入区间核过([J1](docs/numbers/J1-economy.md)、[J2](docs/numbers/J2-automation.md))。
94
+
95
+ ### 玩法
96
+ - **钓鱼 2.0**:40 种鱼、4 个钓点(小河、湖、海边、只在晚上开的夜潭)、4 把鱼竿;每种鱼游法不同、速度区间不同。等咬钩只要几秒(竹竿 3~8 秒),难度放在搏斗上,好竿让搏斗更容易;同种鱼越大越值钱。鲜虾鱼饵 15 → 6、夜光鱼饵 40 → 8。老存档送一把碳素竿。
97
+ - **自动钓鱼加长**:可以买鱼篓、2 / 4 小时的自动钓、鱼饵盒;原来的 30 / 60 分钟一点没变。
98
+ - **旅行 7 → 15 个地点**:公园、游乐场、动物园、海洋馆、竹林、雪山、沙漠、太空站(当过宇航员才能去),26 种新纪念品各有一句小故事。
99
+ - **商店新上 27 件**:食物 12、洗浴 6、玩具 9。
100
+ - **每个职业都能打 10 分钟短班**:时薪跟整班一样;短班不算完整一班,不会因为连打短班过劳生病。
101
+
102
+ ### 扩展(都要游戏 0.35.0)
103
+ - **菜园 2.1.0**:16 种作物、8 块地;水壶、收割镰、播种器买了才能一键浇水 / 收获 / 种满;可以雇帮工猪替你收菜补种。界面换成插画版:天空、远山、木框田,主按钮自动做最该做的事。
104
+ - **矿洞 2.1.0**:去掉体力,20 层,5 级镐一级级开路,矿脉、宝箱、化石、炸弹、电梯;可以雇小矿工猪替你挖。界面换成插画版洞窟。
105
+ - **盲盒 3.0.0**:资质凭证放进钱包,1 张值 15 金币,能换成金币但不能用金币买;老存档的凭证打开盲盒时自动搬进钱包。
106
+ - **扭蛋 1.2.0**:三台机器加进商店新上的东西。
107
+ - 帮工、小矿工、自动钓鱼的仓都是攒满 6 小时就停,回来收一下接着干;满级每小时最多 400。
108
+ - **扩展可以从文件导入**:「设置 → 扩展 → 📦 从文件导入」,选发布页上的扩展包 `.piggyext`(或扩展的三个文件)。官方扩展断网也能装;不是官方的先提醒风险,确认后才装,标「本地导入」、不会被在线更新盖掉。
109
+
110
+ ### 桌面版(外壳 0.6.4)
111
+ - 新增代理设置:跟随系统、直连、自定义 HTTP / SOCKS5;游戏更新、外壳更新和在线扩展共用。
112
+ - 小猪大小改成「− 百分比 +」,每次 10%,也能直接输入;换皮肤后照样能调,两个窗口马上同步。
113
+ - 面板开着时,签到 / 礼包小气泡挪到猪旁边,猪说的话也不再被面板挡住。
114
+ - 少问 GitHub:版本列表和在线扩展目录存在本机,一段时间内不重复请求,带 ETag 问「有没有变」,不再撞「每小时次数用完」。
115
+ - 修复两个窗口抢消息导致调试台词不显示。
116
+
117
+ ### 其他
118
+ - 网页版自带的 emoji 字体补上新玩法和扩展里用到的 40 多个表情。
119
+
120
+ ## [0.34.1] — 2026-10-09 · Gitee 的 Windows 安装包改成首次启动下载游戏(外壳 0.6.3)
121
+
122
+ - **Gitee 的 Windows 安装包不再自带游戏**:安装包离 Gitee 单个附件 100MB 的上限只剩一点点,0.34.0 加了新图就放不下了。现在安装包只带外壳,第一次打开会弹个小窗口「正在下载小猪」,下好就进游戏(约 3.5MB);断网或下载失败会说明原因,可以重试、打开下载页或退出。以后更新照旧在主屏「🔄 更新」里。
123
+ GitHub 的安装包、Gitee 的 Linux 和 macOS 安装包不变,照旧自带游戏。
124
+ - 游戏包以后要是超过 95MB,会自动拆成几卷上传,外壳 0.6.3 起按顺序下载、逐卷校验再拼起来;老外壳看不到分卷的版本,会提示先更新外壳。
125
+ - 开发用:`PIGGY_BUNDLED_GAME`(模拟安装包不带游戏)、`PIGGY_GAME_PIN`(指定首次下载用的清单),见 HANDOFF 8.2。
126
+
127
+
128
+ ## [0.34.0] — 2026-10-09 · 一猪多图、生日蛋糕、打盹睡姿(建议更新桌面外壳到 0.6.2)
129
+
130
+ **一猪多图**
131
+ - 普通小猪按状态换成对应的图(图的灵感来自 [PigHub](https://pighub.top/),由 AI 重新画成本项目的样子,见 README「致谢与许可」):
132
+ - 还没拆的纸盒是「猪递」;去世当天还是小猪的样子,满一天后是墓碑旁的幽灵;盲盒寻访页有寻访猪。
133
+ - 生病按病种和阶段:感冒流鼻涕、发烧(感冒第 2 期)、皮肤病起红疹、头晕晕乎乎;咳嗽、肠胃和病危保持原样加病色。
134
+ - 饿了、困了、孤单、脏了、开心;喂食、洗澡、玩耍、升级;上学、兴趣班(健身、听歌、画画)、钓鱼、旅行;部分职业打工(发传单、歌手、作曲、漫画家、运动员、教练、园丁、花店、CEO、明星)。
135
+ - 同一状态有几张图的按小时轮换。专属形态(猪猪王、恶魔猪等)、圆润/胖胖体型和导入的皮肤保留自己的立绘。
136
+ - 几张还没想好放哪的图(徽章、检疫合格、笼子等)先留着不用。
137
+ - **生日**:猪生日当天头顶冒 🎂,点一下开个小派对——猪换成生日派对图、冒彩带,15 秒后恢复;当天点过就不再冒。不发奖励(以后另定)。
138
+ - 图片离线处理成透明底 PNG、长边 256px,桌面版不再有白框;两张听歌图里耳机线、头箍围住的白底也去掉了。
139
+
140
+ **打盹和动作**
141
+ - 打盹时按当前形态换成睡姿,头顶偶尔冒 Zzz;自定义皮肤可以在 ZIP 里加可选的 `sleep.svg`,制作教程和示例包已更新。
142
+ - 摸头轻压回弹,喂食短跳落地,玩耍左右两次小跳。
143
+
144
+ **桌面版(外壳 0.6.2)**
145
+ - Windows 上从桌面直接移到猪身上右键,第一次就能打开菜单(以前常要点好几次)。
146
+ - 点面板里的照顾按钮时,猪的动作和气泡不再被面板盖住。
147
+ - 右键猪不再顺带摸一下;脏和生病时身边绕着苍蝇/病毒;外出时也能看出脏了(「脏」排在外出和饿前面);恢复桌面版的状态变色。以上来自贡献者 [@tetezi](https://github.com/tetezi) 的 [#8](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/8),谢谢!
148
+
149
+ **调试**
150
+ - 调试页新增「立绘」:每张图一个按钮,写明用在哪,点一下猪就显示这张;能指定做哪个小动作(含打盹)、马上过生日;「成长生病」页加了「发烧」。桌面版也能用(以前桌面版的「小动作」按钮是灰的)。
151
+
152
+ **扩展**
153
+ - 盲盒 2.2.2:寻访页加寻访猪图。
154
+
155
+ ## [0.33.1] — 2026-10-07 · 修:开着面板拖猪,面板越跑越远(要更新桌面外壳到 0.6.1)
156
+
157
+ - **Windows 缩放 125%/150% 下开着面板拖猪,面板和猪越拉越远、松手后面板落在别处**(用户反馈录屏):根子在桌面外壳拖动时每一帧「读回窗口大小再设回去」,分数缩放下读回来的比设的大 1px,拖一次猪窗口能从 345 宽涨到 482,钉在窗口右下角的猪被越推越远,鼠标也越甩越远。现在拖动全程用请求的大小、不用读回值;面板每一帧都按猪现在在哪直接算位置,不再在上一帧的面板位置上累加。
158
+ - 拖动中面板和猪哪边对齐不再中途换边(以前拖到屏幕左边面板会横跳一个面板宽),放不下就停在屏幕边;松手后原来那边还放得下就保持。
159
+ - 在 Win11 虚拟机 125% 缩放下用真鼠标开着面板拖 3 次并录屏逐帧量:面板和猪的相对位置拖动全程 90% 的帧偏差 ≤2px、不随时间增长(修前最远偏 204px),猪跟鼠标的距离中位数从 97px 降到 1~5px;Linux GNOME 9 组真拖录屏回归通过。
160
+ - 游戏包会顺带把猪在窗口里的位置报给外壳(贴屏幕边时内容在窗口里挪过),面板按它贴猪;老外壳忽略这条,不影响。
161
+ - 开发用:`tools/drag-film.py --panel` 逐帧量面板和猪的相对位置。
162
+
163
+ ## [0.33.0] — 2026-10-07 · 桌面版猪和面板分开、扩展成就
164
+
165
+ ### 桌面版:猪和面板各一个窗口(要更新桌面外壳到 0.6.0)
166
+
167
+ - 面板不再和猪挤在同一个窗口里,而是单独一个窗口贴在猪旁边:上方放得下就开在上面,否则开在下面,整块在屏幕里。开关面板、切 App、喂食、冒气泡,猪的窗口都一动不动——以前这些都要改猪那个窗口的大小,差一拍猪就跳一下。
168
+ - 拖猪时面板跟着走;拖到屏幕边上,猪一路跟着鼠标贴到边,松手不再瞬移。点到别处面板自动收起(「点外面自动收起」设置照旧)。
169
+ - 面板里做的事(喂食、签到……),猪那边马上有反应和气泡。
170
+ - 打开面板不再抢焦点,GNOME 不会因此弹「已就绪」提示。
171
+ - 这个版本的游戏包需要桌面外壳 0.6.0;旧外壳会继续用自带的游戏包,「设置 → 更新」里会提示先更新桌面程序。
172
+ - 开发用:`tools/desktop-geometry-check.mjs` 检查两个窗口的行为,GNOME 下用真鼠标拖动并录屏,`tools/drag-film.py` 逐帧看拖动中和松手后猪有没有跳。
173
+
174
+ ### 扩展成就与公共事件(贡献者 [@1nuoiscute](https://github.com/1nuoiscute),[#7](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/7))
175
+
176
+ - 为菜园、矿洞、扭蛋和盲盒新增 12 项成就与小猪 SVG 徽章,累计、收藏与最高探索层数由公共进度事件记录;图鉴最多展示 28 项。
177
+ - 新增扩展 `api.emit` 与可选历史 `progress` 钩子;成功动作事务提交,拒绝和异常回滚,重复上报不重复计数。
178
+ - 旧扩展数据只补录可证明经历,日期未知不编造;更新保留基线,卸载/领养保留主成就进度,新安装可继续积累。旧扩展详情提示更新。
179
+ - 修复试玩页宿主按钮样式挤偏返回箭头。
180
+ - 四个扩展随本版发布:farm/mine/gacha 1.1.0、blindbox 2.2.0(在「设置 → 🧩 扩展」里更新即可拿到新成就)。
181
+
182
+ ### 「Emoji 样式」在网页版也能用
183
+
184
+ - 网页版也带一套瘦身 emoji 子集(0.9MB,覆盖游戏里用到的全部 emoji),「设置 → Emoji 样式」在网页版也能选,默认就是内置那套。桌面版仍用外壳提供的完整字体。
185
+
186
+ ### 其他
187
+
188
+ - 桌面版帧率跟显示器刷新率走,不再写死 30fps;拖动的采样频率也跟显示器同步。
189
+ - 存的猪位置改成「哪块显示器 + 相对偏移」,显示器拔掉会落到最近的屏;跨屏缝拖动不再被弹回。
190
+
191
+ ## [0.32.0] — 2026-10-06 · 小猪成就、日志导出与扩展下载修复
192
+
193
+ ### 小猪成就系统(贡献者 [@1nuoiscute](https://github.com/1nuoiscute),[#6](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/6))
194
+
195
+ - 图鉴新增成就分类,十六枚以小猪为主图案的透明 SVG 徽章,展示目标、进度和获得记录。
196
+ - 成功照顾与实际完成学习、工作、旅行,以及钓鱼收藏和晋升记录驱动解锁;合并同时获得的徽章提示。
197
+ - 记录和累计次数跨领养保留;完整重置清空。旧档只补录可验证经历,未知完成日期明确标注,存档版本保持 v12。
198
+ - 增加隔离试玩入口与规则草案,首版只奖励徽章,不改属性或金币。
199
+
200
+ ### 设置里导出日志
201
+
202
+ - 「设置 → 日志 → 导出日志」一键把运行日志存到你自己选的位置:桌面版弹系统「另存为」,网页版用浏览器的另存为,都不支持时退回普通下载。
203
+ - 日志包含版本、渠道、存档版本、运行环境、每个动作的耗时与拒绝原因、扩展目录与下载的每次尝试、存档读写与迁移、浏览器里的未捕获错误和失败请求;桌面版还会带上窗口与更新的记录。
204
+ - 日志同时写在存档目录的 `logs/dsh-piggy.log`(满 1.5 MB 轮转),内存里始终留最近 800 条。网页版以前没有任何可取的现场,现在也能导出。
205
+ - 规则抛错后回滚、存档损坏留副本这类以前只有一行 console 的情况,现在都会出现在导出的日志里。
206
+
207
+ ### 扩展下载修复
208
+
209
+ - 每个扩展文件下载 12 秒超时、最多试 3 次,三个文件并行;失败时说明是哪个文件、连哪个主机、什么原因(超时 / 被中断 / 域名解析不了),不再只有一句 `fetch failed`。在线目录读取也加了超时和重试。
210
+ - 点「下载」立刻变成「下载中…」并挡住重复点击;失败的原因留在卡片上并给一个「重试」按钮,不再只闪 2.4 秒的气泡,也不再让面板看起来「点了没反应」。
211
+
212
+ ### 桌面外壳 0.5.0
213
+
214
+ - 新增 `piggyShell.logs.save`,导出日志时弹系统「另存为」。页面与外壳的约定版本 `DESKTOP_VERSION` 升到 3;老外壳没有这个方法,会自动退回浏览器下载,功能仍可用。
215
+
8
216
  ## [0.31.0] — 2026-10-05 · 扭蛋、菜园、矿洞和盲盒寻访
9
217
 
10
218
  只更新游戏,不用重装桌面程序(桌面外壳仍是 0.3.0)。三个新扩展和盲盒 2.1.0 在「设置 → 🧩 扩展 → 在线扩展」里下载。
@@ -79,7 +287,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
79
287
  - 重复的加潜能(最多 6 潜)并给资质凭证;凭证商店换盲盒券、指定五星 / 六星、豪华大餐、百草丹。
80
288
  - 开盒:补给箱落下,箱缝透出星级颜色的光再打开;十连两行小箱子逐个翻开,可以跳过;六星撒彩纸。
81
289
  - 1.0 的收集自动换算:摆件保留为潜能,碎片 1 换 2 资质凭证。
82
- - 数值单 `docs/tasks/numbers/X1-blindbox.md`。
290
+ - 数值单 `docs/numbers/X1-blindbox.md`。
83
291
 
84
292
  ## [0.30.0-rc.2] — 2026-10-05 · 盲盒上线 + rc.1 反馈修复(测试版)
85
293
 
@@ -91,7 +299,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
91
299
  - 重复的变碎片,10 碎片换一个没有的普通款,40 碎片换隐藏款。
92
300
  - 开盒:盒子摇两下打开,摆件一个个弹出来,新的标 NEW;隐藏款带金光、撒彩纸。展示柜里每个系列一排小底座,没抽到的是剪影,点一下看介绍,集齐有 🏅。
93
301
  - 装了盲盒以后,签到有 15%、在线礼包有 12% 的机会多送一张🎟 盲盒券,免费开 1 个。
94
- - 数值单 `docs/tasks/numbers/X1-blindbox.md`,代码 `extensions/blindbox/`。
302
+ - 数值单 `docs/numbers/X1-blindbox.md`,代码 `extensions/blindbox/`。
95
303
  - 猪在外面时也能直接点打工、上课、旅行、自动钓鱼:先问「结束 xxx,改去 yyy 吗?」,确认后叫回来再出发(打工到一半没有这一班工钱,上学、旅行退钱,自动钓鱼退鱼饵)。
96
304
 
97
305
  ### Changed
@@ -110,7 +318,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
110
318
 
111
319
  ### Added
112
320
  - **钓鱼三种搏斗玩法**:鱼咬钩后随机是圆盘、竖条拉锯、拉力收线之一(原型见 `docs/prototypes/fishing-fight.html`)。
113
- - **台词翻倍**:原有 32 个场景每个翻倍,新增出门打工 / 上学 / 旅行、买东西、钱不够、钓到鱼 / 稀有鱼 / 鱼跑了、换皮肤、体型变化(审稿单 `docs/tasks/numbers/G4-lines.md`)。同一场景最近 3 句不重复。
321
+ - **台词翻倍**:原有 32 个场景每个翻倍,新增出门打工 / 上学 / 旅行、买东西、钱不够、钓到鱼 / 稀有鱼 / 鱼跑了、换皮肤、体型变化(审稿单 `docs/numbers/G4-lines.md`)。同一场景最近 3 句不重复。
114
322
  - **按时间说话**:早上、中午、下午、傍晚、深夜、凌晨各问候一次;在线满 90 分钟提醒喝水、满 2 小时提醒休息眼睛;元旦、情人节、春节、元宵、清明、劳动节、儿童节、端午、七夕、中秋、国庆、圣诞和猪的生日(农历日期写到 2029 年);周末问候。
115
323
  - **摸不同部位**:左键点猪会真的摸它,头、耳朵、鼻子、肚子、背、尾巴、脚各有反应和台词;30 秒内第 8 下开始不耐烦、不再加心情,停手 1 分钟消气。
116
324
  - **猪自己找事做**:面板收着、猪在家时,每 3–8 分钟打滚、打盹、追蝴蝶、挠痒、伸懒腰、看屏幕或吹泡泡。
@@ -147,7 +355,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
147
355
  - **还魂丹放进药品货架**(商店、背包、图鉴都一样),不再单独一个「复活」格子。
148
356
  - 图鉴道具的筛选页签横着放不下时,可以用鼠标滚轮左右滚。
149
357
  - **更新入口收进设置**:主菜单去掉「更新」格子;有新正式版时设置格子冒红点,设置页顶部「🔄 更新」带红点。更新面板按正式版分组,测试版收在对应正式版下面、默认折叠,标「手动安装」;红点和「更新到最新」只看正式版。
150
- - **照顾数值调整**(确认单 `docs/tasks/numbers/G2-care-balance.md`):吃东西不再扣清洁;洗澡扣饱食、玩耍和玩具扣清洁都减半左右;只有饱食已经 100% 还硬喂才可能胀气,概率 15%;心情每小时掉 2.4(原 3.6),清洁每小时掉 3.6(原 4.2)。
358
+ - **照顾数值调整**(确认单 `docs/numbers/G2-care-balance.md`):吃东西不再扣清洁;洗澡扣饱食、玩耍和玩具扣清洁都减半左右;只有饱食已经 100% 还硬喂才可能胀气,概率 15%;心情每小时掉 2.4(原 3.6),清洁每小时掉 3.6(原 4.2)。
151
359
 
152
360
  ### Fixed
153
361
  - **桌面版导入皮肤 ZIP 总是失败**(提示「ZIP 目录损坏」或一串英文):桌面程序把上传的文件当文字读坏了。现在游戏改用文本方式上传,DSH 网页版和桌面版都能导入,不用更新桌面程序。ZIP 损坏时提示「ZIP 文件损坏,请重新压缩后再导入」。
@@ -384,7 +592,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
384
592
 
385
593
  ## [0.25.0] — 2026-10-01 · — B6 台词
386
594
 
387
- - 24 个场景、90 多句台词(文案见 `docs/tasks/numbers/B6-lines.md`):吃撑、打工回来/累了、上完课、毕业、旅行回来、长大、复活等都会说话。
595
+ - 24 个场景、90 多句台词(文案见 `docs/numbers/B6-lines.md`):吃撑、打工回来/累了、上完课、毕业、旅行回来、长大、复活等都会说话。
388
596
  - 闲着每 20–40 分钟冒一句,先说需要什么(饿/脏/孤单),不需要才闲聊;离开半小时以上再打开会打招呼。
389
597
  - 状态页:「🙋 叫你「主人」 改」可以改称呼;「🔔 免打扰」开了不闲聊、不弹日常消息,生病和死亡照样提醒。
390
598
  - 学习页:「🎯 兴趣」成了学段旁边的一个按钮。
@@ -392,7 +600,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
392
600
 
393
601
  ## [0.25.0] — 2026-10-01 · — B2 成长 · B3 疾病 · B4 学习→职业
394
602
 
395
- 数值全部照 `docs/tasks/numbers/` 里用户 2026-10-01 确认的单子。存档 8 → 11,每一级升级前都会原样备份。
603
+ 数值全部照 `docs/numbers/` 里用户 2026-10-01 确认的单子。存档 8 → 11,每一级升级前都会原样备份。
396
604
 
397
605
  ### B2 成长
398
606
  - 成长值(存档里的 `xp`)按猪时间自己长:每小时 +100,乘照顾系数(心情、饿脏、健康)。
@@ -458,7 +666,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
458
666
 
459
667
  ### Changed(内部,界面无变化)
460
668
  - 客户端源码移到 `src/client/`,`client.js` 改为 esbuild 产物;`npm run build` 生成,
461
- `test/bundle.test.js` 守住产物新鲜度。详见 [docs/REFACTOR-PLAN.md](docs/REFACTOR-PLAN.md)。
669
+ `test/bundle.test.js` 守住产物新鲜度。详见 [docs/archive/REFACTOR-PLAN.md](docs/archive/REFACTOR-PLAN.md)。
462
670
  - 新增 [docs/CONVENTIONS.md](docs/CONVENTIONS.md)(项目版编码规范)。
463
671
  - 分层拆分(均保留同名 barrel,导入路径零改动):`data.js` → `data/` 9 个模块、
464
672
  `core.js` → `core/` 15 个模块、`index.js` → `snapshot/commands/routes`、
@@ -771,7 +979,7 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
771
979
 
772
980
  ## [0.15.0] — 2026-09-30
773
981
 
774
- 改造计划的第一批(手感 + 商店)。完整计划见 [docs/ROADMAP.md](docs/ROADMAP.md)。
982
+ 改造计划的第一批(手感 + 商店)。完整计划见 [docs/archive/ROADMAP-2026-09-30.md](docs/archive/ROADMAP-2026-09-30.md)。
775
983
 
776
984
  ### Added
777
985
  - **小猪大了一圈。** 40px 在面板里太小了,整套尺寸重排:
@@ -0,0 +1,224 @@
1
+ 本项目的小猪立绘(assets/piglet.svg 及在它基础上改画的各张猪图)参照 Noto Emoji 的 🐖(U+1F416)重绘,
2
+ 属于 Noto Emoji 图片素材的衍生作品。Noto Emoji 的图片素材按 Apache License 2.0 授权,原始声明和许可全文如下。
3
+ 来源:https://github.com/googlefonts/noto-emoji (2D/svg/emoji_u1f416.svg)
4
+
5
+ ----- 原始声明(noto-emoji/2D/svg/LICENSE)-----
6
+
7
+ Copyright 2013 Google, Inc. All Rights Reserved.
8
+
9
+ Licensed under the Apache License, Version 2.0 (the "License");
10
+ you may not use this file except in compliance with the License.
11
+ You may obtain a copy of the License at
12
+
13
+ http://www.apache.org/licenses/LICENSE-2.0
14
+
15
+ Unless required by applicable law or agreed to in writing, software
16
+ distributed under the License is distributed on an "AS IS" BASIS,
17
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ See the License for the specific language governing permissions and
19
+ limitations under the License.
20
+
21
+ ----- Apache License 2.0 全文 -----
22
+
23
+ Apache License
24
+ Version 2.0, January 2004
25
+ http://www.apache.org/licenses/
26
+
27
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
28
+
29
+ 1. Definitions.
30
+
31
+ "License" shall mean the terms and conditions for use, reproduction,
32
+ and distribution as defined by Sections 1 through 9 of this document.
33
+
34
+ "Licensor" shall mean the copyright owner or entity authorized by
35
+ the copyright owner that is granting the License.
36
+
37
+ "Legal Entity" shall mean the union of the acting entity and all
38
+ other entities that control, are controlled by, or are under common
39
+ control with that entity. For the purposes of this definition,
40
+ "control" means (i) the power, direct or indirect, to cause the
41
+ direction or management of such entity, whether by contract or
42
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
43
+ outstanding shares, or (iii) beneficial ownership of such entity.
44
+
45
+ "You" (or "Your") shall mean an individual or Legal Entity
46
+ exercising permissions granted by this License.
47
+
48
+ "Source" form shall mean the preferred form for making modifications,
49
+ including but not limited to software source code, documentation
50
+ source, and configuration files.
51
+
52
+ "Object" form shall mean any form resulting from mechanical
53
+ transformation or translation of a Source form, including but
54
+ not limited to compiled object code, generated documentation,
55
+ and conversions to other media types.
56
+
57
+ "Work" shall mean the work of authorship, whether in Source or
58
+ Object form, made available under the License, as indicated by a
59
+ copyright notice that is included in or attached to the work
60
+ (an example is provided in the Appendix below).
61
+
62
+ "Derivative Works" shall mean any work, whether in Source or Object
63
+ form, that is based on (or derived from) the Work and for which the
64
+ editorial revisions, annotations, elaborations, or other modifications
65
+ represent, as a whole, an original work of authorship. For the purposes
66
+ of this License, Derivative Works shall not include works that remain
67
+ separable from, or merely link (or bind by name) to the interfaces of,
68
+ the Work and Derivative Works thereof.
69
+
70
+ "Contribution" shall mean any work of authorship, including
71
+ the original version of the Work and any modifications or additions
72
+ to that Work or Derivative Works thereof, that is intentionally
73
+ submitted to Licensor for inclusion in the Work by the copyright owner
74
+ or by an individual or Legal Entity authorized to submit on behalf of
75
+ the copyright owner. For the purposes of this definition, "submitted"
76
+ means any form of electronic, verbal, or written communication sent
77
+ to the Licensor or its representatives, including but not limited to
78
+ communication on electronic mailing lists, source code control systems,
79
+ and issue tracking systems that are managed by, or on behalf of, the
80
+ Licensor for the purpose of discussing and improving the Work, but
81
+ excluding communication that is conspicuously marked or otherwise
82
+ designated in writing by the copyright owner as "Not a Contribution."
83
+
84
+ "Contributor" shall mean Licensor and any individual or Legal Entity
85
+ on behalf of whom a Contribution has been received by Licensor and
86
+ subsequently incorporated within the Work.
87
+
88
+ 2. Grant of Copyright License. Subject to the terms and conditions of
89
+ this License, each Contributor hereby grants to You a perpetual,
90
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
91
+ copyright license to reproduce, prepare Derivative Works of,
92
+ publicly display, publicly perform, sublicense, and distribute the
93
+ Work and such Derivative Works in Source or Object form.
94
+
95
+ 3. Grant of Patent License. Subject to the terms and conditions of
96
+ this License, each Contributor hereby grants to You a perpetual,
97
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
98
+ (except as stated in this section) patent license to make, have made,
99
+ use, offer to sell, sell, import, and otherwise transfer the Work,
100
+ where such license applies only to those patent claims licensable
101
+ by such Contributor that are necessarily infringed by their
102
+ Contribution(s) alone or by combination of their Contribution(s)
103
+ with the Work to which such Contribution(s) was submitted. If You
104
+ institute patent litigation against any entity (including a
105
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
106
+ or a Contribution incorporated within the Work constitutes direct
107
+ or contributory patent infringement, then any patent licenses
108
+ granted to You under this License for that Work shall terminate
109
+ as of the date such litigation is filed.
110
+
111
+ 4. Redistribution. You may reproduce and distribute copies of the
112
+ Work or Derivative Works thereof in any medium, with or without
113
+ modifications, and in Source or Object form, provided that You
114
+ meet the following conditions:
115
+
116
+ (a) You must give any other recipients of the Work or
117
+ Derivative Works a copy of this License; and
118
+
119
+ (b) You must cause any modified files to carry prominent notices
120
+ stating that You changed the files; and
121
+
122
+ (c) You must retain, in the Source form of any Derivative Works
123
+ that You distribute, all copyright, patent, trademark, and
124
+ attribution notices from the Source form of the Work,
125
+ excluding those notices that do not pertain to any part of
126
+ the Derivative Works; and
127
+
128
+ (d) If the Work includes a "NOTICE" text file as part of its
129
+ distribution, then any Derivative Works that You distribute must
130
+ include a readable copy of the attribution notices contained
131
+ within such NOTICE file, excluding those notices that do not
132
+ pertain to any part of the Derivative Works, in at least one
133
+ of the following places: within a NOTICE text file distributed
134
+ as part of the Derivative Works; within the Source form or
135
+ documentation, if provided along with the Derivative Works; or,
136
+ within a display generated by the Derivative Works, if and
137
+ wherever such third-party notices normally appear. The contents
138
+ of the NOTICE file are for informational purposes only and
139
+ do not modify the License. You may add Your own attribution
140
+ notices within Derivative Works that You distribute, alongside
141
+ or as an addendum to the NOTICE text from the Work, provided
142
+ that such additional attribution notices cannot be construed
143
+ as modifying the License.
144
+
145
+ You may add Your own copyright statement to Your modifications and
146
+ may provide additional or different license terms and conditions
147
+ for use, reproduction, or distribution of Your modifications, or
148
+ for any such Derivative Works as a whole, provided Your use,
149
+ reproduction, and distribution of the Work otherwise complies with
150
+ the conditions stated in this License.
151
+
152
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
153
+ any Contribution intentionally submitted for inclusion in the Work
154
+ by You to the Licensor shall be under the terms and conditions of
155
+ this License, without any additional terms or conditions.
156
+ Notwithstanding the above, nothing herein shall supersede or modify
157
+ the terms of any separate license agreement you may have executed
158
+ with Licensor regarding such Contributions.
159
+
160
+ 6. Trademarks. This License does not grant permission to use the trade
161
+ names, trademarks, service marks, or product names of the Licensor,
162
+ except as required for reasonable and customary use in describing the
163
+ origin of the Work and reproducing the content of the NOTICE file.
164
+
165
+ 7. Disclaimer of Warranty. Unless required by applicable law or
166
+ agreed to in writing, Licensor provides the Work (and each
167
+ Contributor provides its Contributions) on an "AS IS" BASIS,
168
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
169
+ implied, including, without limitation, any warranties or conditions
170
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
171
+ PARTICULAR PURPOSE. You are solely responsible for determining the
172
+ appropriateness of using or redistributing the Work and assume any
173
+ risks associated with Your exercise of permissions under this License.
174
+
175
+ 8. Limitation of Liability. In no event and under no legal theory,
176
+ whether in tort (including negligence), contract, or otherwise,
177
+ unless required by applicable law (such as deliberate and grossly
178
+ negligent acts) or agreed to in writing, shall any Contributor be
179
+ liable to You for damages, including any direct, indirect, special,
180
+ incidental, or consequential damages of any character arising as a
181
+ result of this License or out of the use or inability to use the
182
+ Work (including but not limited to damages for loss of goodwill,
183
+ work stoppage, computer failure or malfunction, or any and all
184
+ other commercial damages or losses), even if such Contributor
185
+ has been advised of the possibility of such damages.
186
+
187
+ 9. Accepting Warranty or Additional Liability. While redistributing
188
+ the Work or Derivative Works thereof, You may choose to offer,
189
+ and charge a fee for, acceptance of support, warranty, indemnity,
190
+ or other liability obligations and/or rights consistent with this
191
+ License. However, in accepting such obligations, You may act only
192
+ on Your own behalf and on Your sole responsibility, not on behalf
193
+ of any other Contributor, and only if You agree to indemnify,
194
+ defend, and hold each Contributor harmless for any liability
195
+ incurred by, or claims asserted against, such Contributor by reason
196
+ of your accepting any such warranty or additional liability.
197
+
198
+ END OF TERMS AND CONDITIONS
199
+
200
+ APPENDIX: How to apply the Apache License to your work.
201
+
202
+ To apply the Apache License to your work, attach the following
203
+ boilerplate notice, with the fields enclosed by brackets "[]"
204
+ replaced with your own identifying information. (Don't include
205
+ the brackets!) The text should be enclosed in the appropriate
206
+ comment syntax for the file format. We also recommend that a
207
+ file or class name and description of purpose be included on the
208
+ same "printed page" as the copyright notice for easier
209
+ identification within third-party archives.
210
+
211
+ Copyright [yyyy] [name of copyright owner]
212
+
213
+ Licensed under the Apache License, Version 2.0 (the "License");
214
+ you may not use this file except in compliance with the License.
215
+ You may obtain a copy of the License at
216
+
217
+ http://www.apache.org/licenses/LICENSE-2.0
218
+
219
+ Unless required by applicable law or agreed to in writing, software
220
+ distributed under the License is distributed on an "AS IS" BASIS,
221
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
222
+ See the License for the specific language governing permissions and
223
+ limitations under the License.
224
+