Repository navigation
Batch 2026-10-09b: plugin host for atomic-plugins drive apps (#2148) - #2169
Merged
Merged
Conversation
A plugin's manifest `destination` can now declare keyed `tables` beside
(or instead of) its single `table`. Set up creates each one beneath the
plugin with its own row class and default view, and stores
`tables: { <key>: { table, rowClass } }` in the plugin's config next to
the unchanged `{ table, rowClass, properties }`. A drive app shown as a
view of any of those tables gets the same map from `store.getData()`.
This is what the money app needs for statements and closing balances
(atomic-plugins#148, M-7 and M-12).
- provisionDestination moves from FileImport into @tomic/lib
(plugin-destination.ts), with destinationTablesFor for the host's
`data` op. Set up resumes: a release that adds a key creates only that
table.
- The server now checks `destination` with the browser's rules and
messages instead of only requiring a map. Both parsers are held to new
shared fixtures in testdata/plugin-manifest/.
- A single-table manifest keeps its config, its table localId and its
release id; the single-table fixture's id is pinned, and so is the
stored bytes of an app package carrying it.
- Docs: creating-plugins.md describes `accepts`, `destination.table`
and `destination.tables`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ported from #1768 onto develop. Hand edits while
resolving: `manifest.rs` and `plugin-manifest.ts` keep develop's operation
URL check; the `atomic-proxy:` parsing (#1725) that sat next to this change
in the stack is left out. The `.po` catalogs are develop's, settled
separately.
(cherry picked from commit e739bf7)
Reads up to 100 resources in one round trip, each exactly as `get` reads it, through the person's store; an unreadable subject is reported in its place. Used by atomic-plugins' issue-tracker, money and notion drive apps. Ported from #1748 (97eff29) onto develop's plugin contract (#1970). Hand edits while resolving: kept develop's Store-shaped `query`, `search` and `getContext` in view-client.js and added `getMany` beside them, passing the title to `makeResource` like `getResource` does; dropped the openExternal/openResource/proxy.disconnect pieces this commit carried as context (types, docs, TESTING_COVERAGE, hostStore.test), which wait on the questions on #1726. (cherry picked from commit 97eff29) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apps had no success colour and guessed dark mode from the background colour.
- The theme gets `colors.success`: #237a42 in light mode, #4cc27a in dark.
Frames get it as `--t-color-success`.
- The frame stylesheet sets `color-scheme: light | dark` on `:root`, and the
theme message now carries `colorScheme`, both from the built theme's
`darkMode` (the host's actual setting, including "auto"). FrameBridge
keeps it across a ready message and a reload. AppFrame and packaged
plugin views both send it.
- view-client: `store.getTheme()` returns `{ colorScheme }`. Before any
message has arrived it reads the applied `color-scheme` back.
`store.onThemeChange(handler)` fires once per real switch.
- `ColorScheme` and `ThemeMessage` in `@tomic/plugin`; documented in
custom-views.md.
Closes #1738
Ported from #1750 (2923ce1, with the theme-test
rename from 62187a1) onto develop's plugin contract (#1970). Hand edits
while resolving: AppFrame keeps develop's host UI next to the frame's
colour scheme; pluginRPC keeps develop's HostUI import beside the
ColorScheme one; view-client.js keeps develop's ASKS_THE_PERSON and
`point` and adds the theme listener; the openExternal/openResource methods
and docs this commit carried as context are left out (they wait on #1726).
(cherry picked from commit 2923ce1)
(cherry picked from commit 62187a1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pnpm clean-translations after the #1768 port: the new "Set up creates {0} tables" message, the renamed placeholder of the single-table one, and a msgstr develop's catalogs were missing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before: #2148 (plugin host for atomic-plugins drive apps) was green alone on a develop from before the last two batches.
After: it is merged on top of the current develop (8066959), so one run validates it there.
Conflicts: only the message catalogs (.po), re-extracted.
How: merge of the #2148 head (6126887) into a branch off develop; CI dispatched on this branch. After a green run #2148 is closed by hand.
Generated by Claude Code