@sempods/apps 0.7.0 → 0.8.0-dev.1
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.
- package/CHANGELOG.md +203 -0
- package/README.md +6 -3
- package/bin/sempods-apps.mjs +1 -0
- package/instructions/app-workflow.md +254 -111
- package/instructions/publish.md +13 -7
- package/instructions/setup.md +33 -23
- package/instructions/visual-check.md +43 -0
- package/package.json +3 -3
- package/scripts/build-site.mjs +15 -3
- package/scripts/check.mjs +3 -1
- package/scripts/icon.mjs +47 -0
- package/scripts/lib/apps.mjs +56 -2
- package/scripts/lib/generate.mjs +55 -14
- package/scripts/lib/icon.mjs +192 -0
- package/scripts/lib/overview.mjs +5 -3
- package/scripts/lib/page.mjs +89 -0
- package/scripts/lib/themes.mjs +58 -0
- package/scripts/migrate.mjs +37 -14
- package/scripts/new-app.mjs +43 -10
- package/scripts/sdk-update.mjs +16 -1
- package/shared/files/{f2fb601d5ebc4ca72274ac9d3fcf7b7a96e27958bb92cd065a9165b501ee94d7 → 44c114d4d2c8b172f4757100f79e8a1a00d30c96ba2ad8f75c3373e52f6b849f} +2 -2
- package/shared/files/{31ede0d1a035d8531100ebfd751510c772ab0871309a0b9752a77fb96187eb53 → 843c078e84912158607ebb8ce0042589d676a742bcd3cf8b6c474d62ff3a6845} +3 -2
- package/shared/files/{1c29eed0a0297c742ca5814de9081ff8efce3b2da5d9e1bdf90a403873da4aa9 → f30ec6b7f9de16be54919382ab18cdcc33ee64938f7b907d855bcf6740e4c102} +8 -2
- package/shared/snapshot.json +4 -4
- package/skeleton/app/NOTES.md +11 -1
- package/skeleton/app/index.html +7 -3
- package/skeleton/app/package.json +6 -6
- package/skeleton/app/src/App.tsx +53 -21
- package/skeleton/app/src/NewVersionNotice.tsx +6 -11
- package/skeleton/app/src/examples/ListScreen.tsx +167 -0
- package/skeleton/app/src/index.css +86 -13
- package/skeleton/app/src/main.tsx +3 -0
- package/skeleton/app/src/pwa.ts +1 -1
- package/skeleton/app/src/routes.test.ts +19 -0
- package/skeleton/app/src/routes.ts +139 -0
- package/skeleton/app/src/texts.test.ts +28 -0
- package/skeleton/app/src/texts.ts +35 -0
- package/skeleton/app/src/themes/calm.css +11 -0
- package/skeleton/app/src/themes/fresh.css +11 -0
- package/skeleton/app/src/themes/playful.css +11 -0
- package/skeleton/app/src/themes/warm.css +11 -0
- package/skeleton/app/src/ui/Composer.tsx +18 -0
- package/skeleton/app/src/ui/ContextSwitch.tsx +85 -0
- package/skeleton/app/src/ui/Dialog.tsx +103 -0
- package/skeleton/app/src/ui/Menu.tsx +118 -0
- package/skeleton/app/src/ui/Tabs.tsx +39 -0
- package/skeleton/app/src/ui/dismiss.ts +30 -0
- package/skeleton/app/src/ui/icons.tsx +53 -0
- package/skeleton/app/src/ui/ui.css +240 -0
- package/skeleton/app/vite.config.ts +4 -4
- package/skills/update/SKILL.md +19 -10
- package/skeleton/app/public/favicon.svg +0 -1
- package/skeleton/app/public/icon-192.png +0 -0
- package/skeleton/app/public/icon-512.png +0 -0
- package/skeleton/app/src/start.test.ts +0 -15
- package/skeleton/app/src/start.ts +0 -9
package/skills/update/SKILL.md
CHANGED
|
@@ -17,15 +17,21 @@ instead.
|
|
|
17
17
|
1. **Start clean.** The working tree must have no uncommitted changes, so the
|
|
18
18
|
update is one reviewable diff. Work on a new branch, for example
|
|
19
19
|
`tooling-update-<version>`, or on the branch of the version pull request.
|
|
20
|
+
If that branch is behind the default branch, for example after an SDK
|
|
21
|
+
pull request was merged, merge the default branch first: keep the newer
|
|
22
|
+
version of each package and let `pnpm install` rewrite a conflicting
|
|
23
|
+
`pnpm-lock.yaml`.
|
|
20
24
|
2. **Update.** `pnpm run update` installs the newest version and migrates;
|
|
21
25
|
`pnpm run update <version>` a specific one. It first checks that Node and
|
|
22
26
|
pnpm suit that version; if not, it changes nothing and prints a numbered
|
|
23
|
-
order to follow before running it again. On the branch of a version pull
|
|
24
|
-
`
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
order to follow before running it again. On the branch of a version pull
|
|
28
|
+
request, `package.json` already names the new version but `node_modules`
|
|
29
|
+
does not have it, so pnpm refuses `pnpm run`. Start the installed tooling
|
|
30
|
+
directly with the version the pull request names; it runs the same check
|
|
31
|
+
before it installs anything:
|
|
28
32
|
`node node_modules/@sempods/apps/bin/sempods-apps.mjs update <version>`.
|
|
33
|
+
Without `node_modules`, run `pnpm install` first, then
|
|
34
|
+
`pnpm run update <version>`.
|
|
29
35
|
3. **Read the upgrade notes** for every version after the old one, including
|
|
30
36
|
skipped ones, in `node_modules/@sempods/apps/CHANGELOG.md`. They name what
|
|
31
37
|
the migration cannot do alone, such as changes the owner's apps need.
|
|
@@ -62,8 +68,11 @@ instead.
|
|
|
62
68
|
`node node_modules/@sempods/apps/bin/sempods-apps.mjs migrate --done`.
|
|
63
69
|
Without manual cases, `pnpm run migrate` finishes on its own.
|
|
64
70
|
6. **Check.** Run `pnpm run check` until it passes.
|
|
65
|
-
7. **Hand over.** With a GitHub remote,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
what
|
|
69
|
-
|
|
71
|
+
7. **Hand over.** With a GitHub remote, commit the result to the version pull
|
|
72
|
+
request's branch, or open a pull request "Update the tooling to <version>",
|
|
73
|
+
with the migration report, each manual case and how it was decided, and
|
|
74
|
+
what to try. Tell the owner what changed in plain words and
|
|
75
|
+
what they should try. App notes and the owner's entries in `package.json`
|
|
76
|
+
are never rewritten by the migration; of the apps' files it only
|
|
77
|
+
regenerates the generated configuration and moves files still unchanged
|
|
78
|
+
from the skeleton where a release's upgrade notes say so.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="6" fill="#176354"/></svg>
|
|
Binary file
|
|
Binary file
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { app } from './sempods.generated.ts';
|
|
3
|
-
import { startMessage } from './start.ts';
|
|
4
|
-
|
|
5
|
-
describe('startMessage', () => {
|
|
6
|
-
it('speaks the app language', () => {
|
|
7
|
-
expect(startMessage('de')).toMatch(/^Verbunden\./);
|
|
8
|
-
expect(startMessage('en')).toMatch(/^Connected\./);
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it('has a text for the configured language', () => {
|
|
12
|
-
// The generated configuration imports without a browser.
|
|
13
|
-
expect(startMessage(app.language)).not.toBe('');
|
|
14
|
-
});
|
|
15
|
-
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Language } from '@sempods/app-sdk';
|
|
2
|
-
|
|
3
|
-
// Replace this with your app's own domain logic. Pure functions like this one
|
|
4
|
-
// are tested in src/start.test.ts without a browser or a Pod.
|
|
5
|
-
export function startMessage(language: Language): string {
|
|
6
|
-
return language === 'de'
|
|
7
|
-
? 'Verbunden. Beschreibe deinem Assistenten, was diese App tun soll.'
|
|
8
|
-
: 'Connected. Tell your assistant what this app should do.';
|
|
9
|
-
}
|