@rockysoft/opencode-hybrid-workflow 1.0.0 → 1.0.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/README.md CHANGED
@@ -125,7 +125,7 @@ Confirm installation of Playwright and Firefox.
125
125
 
126
126
  ![Confirm browser installation](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@0.3.2-beta.3/docs/images/11-browser-confirm.png)
127
127
 
128
- Each reviewer gets an isolated browser for a captured frontend and disposable API fixtures. Ask the agent to add [repeatable browser checks](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/docs/browser-evidence.md). Live backend testing stays with your application's integration tests.
128
+ Each reviewer gets an isolated browser for a captured frontend and disposable API fixtures. Ask the agent to add [repeatable browser checks](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/docs/browser-evidence.md). Live backend testing stays with your application's integration tests.
129
129
 
130
130
  ![Browser support installed](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@0.3.2-beta.3/docs/images/12-browser-ready.png)
131
131
 
@@ -175,10 +175,10 @@ Remove the old plugin entries from `opencode.json` and `cli.json` before adding
175
175
 
176
176
  </details>
177
177
 
178
- [Advanced configuration](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/docs/configuration.md) · [MIT license](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/LICENSE) · [Third-party notices](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/THIRD_PARTY_NOTICES.md)
178
+ [Advanced configuration](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/docs/configuration.md) · [MIT license](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/LICENSE) · [Third-party notices](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/THIRD_PARTY_NOTICES.md)
179
179
 
180
- For deterministic Vitest projects, see [faster verification](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/docs/verification.md). Full checks remain the default; eligible projects automatically choose full checks when measured optimization overhead is higher.
180
+ For deterministic Vitest projects, see [faster verification](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/docs/verification.md). Full checks remain the default; eligible projects automatically choose full checks when measured optimization overhead is higher.
181
181
 
182
- [Repeatable browser checks](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/docs/browser-evidence.md) capture changed frontend states once for both reviewers, while keeping their independent inspections and approval decisions.
182
+ [Repeatable browser checks](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/docs/browser-evidence.md) capture changed frontend states once for both reviewers, while keeping their independent inspections and approval decisions.
183
183
 
184
- [Engineering handoffs](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.0/docs/engineering-handoffs.md) give implementation agents concrete responsibility and state ownership. Reviewers check the code against the plan; small changes keep existing patterns, with no file-length limits or extra planning phase.
184
+ [Engineering handoffs](https://cdn.jsdelivr.net/npm/@rockysoft/opencode-hybrid-workflow@1.0.1/docs/engineering-handoffs.md) give implementation agents concrete responsibility and state ownership. Reviewers check the code against the plan; small changes keep existing patterns, with no file-length limits or extra planning phase.
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Release notes
2
2
 
3
+ ## 1.0.1
4
+
5
+ - Refresh usage sidebar settings immediately after saving Hybrid setup, including reviewer models, effort, reviewer count and telemetry location. No restart is needed for these sidebar changes.
6
+ - Discard reads from the previous settings so late results cannot replace the refreshed display.
7
+
3
8
  ## 1.0.0
4
9
 
5
10
  - Carry reviewed project ownership hints into subsequent tasks, with project/source bindings and automatic invalidation when files change. Hints never replace source inspection or approval.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockysoft/opencode-hybrid-workflow",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Portable configurable-reviewer planning, design, implementation checkpoints and usage sidebar for OpenCode 2",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/tui.js CHANGED
@@ -17,7 +17,26 @@ import { legacyTotals } from './sidebar/legacy-totals.mjs';
17
17
  export default Plugin.define({
18
18
  id: 'Hybrid-Workflow',
19
19
  setup(context) {
20
- const preferences = createSettingsUI(context);
20
+ function usageSource() {
21
+ const config = readSettings(context.options);
22
+ const settings = {
23
+ ...config,
24
+ efforts: {
25
+ astra: config.codex?.variant ?? config.codex?.effort ?? 'default',
26
+ opus: config.claude?.variant ?? config.claude?.effort ?? 'default'
27
+ },
28
+ models: {
29
+ astra: config.codex?.model,
30
+ opus: config.claude?.model
31
+ }
32
+ };
33
+ return {
34
+ settings,
35
+ read: createReader(settings)
36
+ };
37
+ }
38
+ const [source, setSource] = createSignal(usageSource());
39
+ const preferences = createSettingsUI(context, () => setSource(usageSource()));
21
40
  context.keymap.layer(() => ({
22
41
  mode: 'global',
23
42
  commands: [{
@@ -44,19 +63,6 @@ export default Plugin.define({
44
63
  const firstRun = setTimeout(() => {
45
64
  void preferences.show(true);
46
65
  }, 750);
47
- const config = readSettings(context.options);
48
- const settings = {
49
- ...config,
50
- efforts: {
51
- astra: config.codex?.variant ?? config.codex?.effort ?? 'default',
52
- opus: config.claude?.variant ?? config.claude?.effort ?? 'default'
53
- },
54
- models: {
55
- astra: config.codex?.model,
56
- opus: config.claude?.model
57
- }
58
- };
59
- const read = createReader(settings);
60
66
  const [saved, update] = context.storage.store('totals', {
61
67
  initial: legacyTotals(context.app.channel)
62
68
  });
@@ -66,6 +72,7 @@ export default Plugin.define({
66
72
  const location = createMemo(() => context.data.session.get(props.sessionID)?.location);
67
73
  createEffect(() => {
68
74
  const directory = location()?.directory;
75
+ const read = source().read;
69
76
  let disposed = false,
70
77
  busy = false;
71
78
  setSnapshot(null);
@@ -190,7 +197,7 @@ export default Plugin.define({
190
197
  _$setProp(_el$11, "flexDirection", "column");
191
198
  _$insertNode(_el$12, _el$13);
192
199
  _$insertNode(_el$13, _el$14);
193
- _$insert(_el$13, () => card.model ?? settings.models[card.who], _el$14);
200
+ _$insert(_el$13, () => card.model ?? source().settings.models[card.who], _el$14);
194
201
  _$insert(_el$13, () => card.effort, null);
195
202
  _$insertNode(_el$15, _el$16);
196
203
  _$insert(_el$15, () => number(card.total), _el$16);