mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-10 18:59:56 +00:00
rename: slopsmith → feedBack, byron → got-feedBack (#537)
* Update GitHub repo references from feedback* to feedBack* * rename: slopsmith -> feedBack, byron -> got-feedBack Renames across the entire codebase: - slopsmith/Slopsmith/SLOPSMITH/SlopSmith -> feedBack/FeedBack/FEEDBACK/FeedBack - byron/Byron/Byrongamatos -> got-feedBack/got-feedBack/got-feedBack - /home/byron/ -> /opt/got-feedBack/ - byron@ougsoft.com -> hi@got-feedBack.org - github.com/byrongamatos/ -> github.com/got-feedback/ - com.byron. -> com.got-feedback. - SLOPSMITH_ env vars -> FEEDBACK_ with backward-compat fallback - Protocol/storage strings migrated with read-old/write-new pattern - window.slopsmith JS API -> window.feedBack (canonical) + backward-compat alias Refs: #rename-slopsmith * rename: complete regen against current main + fix backward-compat alias Regenerated the slopsmith->feedBack / byron->got-feedBack rename on top of current main (3 commits had landed since the branch: #572/#554/#574), resolving the four content conflicts in favour of main's newer content (autoplay/auto-exit, accuracy-badge, Virtuoso re-home, feedpak badge). Completion fixes on top of the mechanical rename: - Re-apply rename to post-branch content the original rename never saw: window.slopsmith(.Tour) consumers in lessons.js / notifications.js / onboarding-tour.js, and the matching JS + python tests (autoplay_exit, progression_*, test_feedpak_extension FEEDBACK_* env vars). The test env vars now match server.py (which reads FEEDBACK_SYNC_STARTUP / FEEDBACK_SKIP_STARTUP_TASKS), so the sync-startup test exercises the real path again. - Restore the window.slopsmith backward-compat alias dropped during conflict resolution, and move the bus aliases to AFTER the _feedBackExisting merge block so they reference the fully-assembled object (also fixes the loop_api.test.js API-surface regex, which the original PR latently broke). - Drop the stray empty data/web_library.db (runtime DB lives in CONFIG_DIR) and gitignore it. - Fix stale tone-source test: feed[dB]ack -> fee[dB]ack to match shipped source labels. Verified locally (org CI billing-blocked): JS 819/819 pass; pytest 1669 passed / 1683 collected with 0 import errors; zero residual slopsmith/byron except the two intentional window.slopsmith aliases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * rename: implement advertised backward-compat + prune dead community plugins Address gaps where PR #537's "Backward compatibility" section was advertised but not implemented, and clean up the community plugin list. Env vars (FEEDBACK_* canonical, legacy SLOPSMITH_* honoured): - New lib/env_compat.py (getenv_compat / env_flag_compat) + tests. server.py (_env_flag + all FEEDBACK_* reads), diagnostics_hardware, gp2midi and tailwind_rebuild now resolve the legacy alias, so existing SLOPSMITH_UI / SLOPSMITH_PLUGINS_DIR / etc. deployments keep working. - Fix the rename collapsing plugins/__init__.py and minigames/routes.py from `FEEDBACK_PLUGINS_DIR or SLOPSMITH_PLUGINS_DIR` into a redundant `FEEDBACK_ or FEEDBACK_` (the fallback was silently lost). Storage (app.js update-channel): - Read feedBack-update-channel, fall back to legacy slopsmith-update-channel, and clear the legacy key on write — so a user's update-channel preference survives the rename instead of resetting to "stable". Community plugin list (README): the rename rewrote third-party repo URLs we don't own. Probed every one; their owners never renamed, so: - Restore the 13 live community plugins to their real slopsmith-* names. - Prune 6 that are 404 to the public (topkoa splitscreen/stems, OmikronApex tuner, Jafz2001 nam-rig-builder, DeathlySin song-preview, Erikcb91 shuffle). - Fix a pre-existing Guitar Theory clone-command typo (nam-tone -> guitar-theory). Verified: env_compat 7/7, JS 819/819, pytest 1690 collected / 0 import errors, rename-sensitive + startup suites green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: byrongamatos <xasiklas@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
byrongamatos
parent
a8ad02739a
commit
af2949677a
@@ -58,7 +58,7 @@ function loadInspector(snapshot, options = {}) {
|
||||
for (const handler of (listeners.get(event.type) || []).slice()) handler(event);
|
||||
return true;
|
||||
},
|
||||
slopsmith: {
|
||||
feedBack: {
|
||||
capabilities: {
|
||||
snapshotDiagnostics: () => (typeof snapshot === 'function' ? snapshot() : snapshot),
|
||||
},
|
||||
@@ -90,7 +90,7 @@ test('capability inspector renders playback session route loop bridges and outco
|
||||
expectedCompatibilityShims: [],
|
||||
};
|
||||
const playbackSnapshot = {
|
||||
schema: 'slopsmith.playback.diagnostics.v1',
|
||||
schema: 'feedBack.playback.diagnostics.v1',
|
||||
state: {
|
||||
sessionId: 'playback-1',
|
||||
state: 'playing',
|
||||
@@ -158,8 +158,8 @@ test('capability inspector renders shims inside their capability domain', () =>
|
||||
lastHitAt: '2026-05-24T00:00:00.000Z',
|
||||
},
|
||||
{
|
||||
shimId: 'runtime:library:refresh:window.slopsmith.libraryProviders.refresh',
|
||||
source: 'window.slopsmith.libraryProviders.refresh',
|
||||
shimId: 'runtime:library:refresh:window.feedBack.libraryProviders.refresh',
|
||||
source: 'window.feedBack.libraryProviders.refresh',
|
||||
capability: 'library',
|
||||
legacySurface: 'refresh',
|
||||
status: 'used',
|
||||
@@ -243,8 +243,8 @@ test('capability inspector renders shims inside their capability domain', () =>
|
||||
assert.doesNotMatch(content, /id="capability-domain-library-graph-frame"/);
|
||||
assert.doesNotMatch(content, /Domain summary/);
|
||||
|
||||
window.__slopsmithCapabilityInspector.expandedDomains = { library: true, playback: true, 'custom.practice': true };
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.expandedDomains = { library: true, playback: true, 'custom.practice': true };
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const expandedContent = elements.get('capability-inspector-content').innerHTML;
|
||||
|
||||
assert.match(expandedContent, /aria-expanded="true"/);
|
||||
@@ -307,7 +307,7 @@ test('capability inspector renders shims inside their capability domain', () =>
|
||||
assert.doesNotMatch(expandedContent, /data-copy-surface=/);
|
||||
|
||||
filterElement.value = 'playback';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const selectedContent = elements.get('capability-inspector-content').innerHTML;
|
||||
|
||||
assert.match(selectedContent, /data-domain-graph="playback"/);
|
||||
@@ -400,11 +400,11 @@ test('capability inspector renders shims inside their capability domain', () =>
|
||||
assert.ok(selectedContent.indexOf('data-legend-icon="operation"') < selectedContent.indexOf('data-legend-icon="command"'));
|
||||
assert.doesNotMatch(selectedContent, /Domain group/);
|
||||
|
||||
window.__slopsmithCapabilityInspector.graphCollapsedGroups = {
|
||||
window.__feedBackCapabilityInspector.graphCollapsedGroups = {
|
||||
'playback|provider|all|command': true,
|
||||
'playback|participant|2|event': true,
|
||||
};
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const collapsedGroupContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(collapsedGroupContent, /data-graph-group-collapsed="true"/);
|
||||
assert.match(collapsedGroupContent, /data-graph-capability-port="group:command"/);
|
||||
@@ -416,12 +416,12 @@ test('capability inspector renders shims inside their capability domain', () =>
|
||||
assert.doesNotMatch(collapsedParticipantButton, /<svg class="h-3\.5 w-3\.5/);
|
||||
assert.doesNotMatch(collapsedParticipantButton, /<path d="m9 6 6 6-6 6"\/>/);
|
||||
|
||||
window.__slopsmithCapabilityInspector.graphCollapsedGroups = {};
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.graphCollapsedGroups = {};
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
|
||||
filterElement.value = 'library';
|
||||
window.__slopsmithCapabilityInspector.domainGraphFilter = 'operations';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.domainGraphFilter = 'operations';
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const operationsOnlyContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(operationsOnlyContent, /aria-pressed="true" class="rounded border px-2 py-1 transition bg-purple-500\/40 text-white border-purple-400\/40">Operations/);
|
||||
assert.match(operationsOnlyContent, /data-capability-node="operation:query-page"/);
|
||||
@@ -430,25 +430,25 @@ test('capability inspector renders shims inside their capability domain', () =>
|
||||
assert.doesNotMatch(operationsOnlyContent, /data-capability-node="event:providers-refreshed"/);
|
||||
|
||||
filterElement.value = 'playback';
|
||||
window.__slopsmithCapabilityInspector.domainGraphFilter = 'events';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.domainGraphFilter = 'events';
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const eventsOnlyContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(eventsOnlyContent, /aria-pressed="true" class="rounded border px-2 py-1 transition bg-purple-500\/40 text-white border-purple-400\/40">Events/);
|
||||
assert.match(eventsOnlyContent, /data-capability-node="event:song:ready"/);
|
||||
assert.doesNotMatch(eventsOnlyContent, /data-capability-node="command:play"/);
|
||||
|
||||
filterElement.value = 'library';
|
||||
window.__slopsmithCapabilityInspector.domainGraphFilter = 'shimmed';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.domainGraphFilter = 'shimmed';
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const shimmedOnlyContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(shimmedOnlyContent, /data-link-kind="shimmed"/);
|
||||
assert.doesNotMatch(shimmedOnlyContent, /data-link-kind="observed"/);
|
||||
assert.match(shimmedOnlyContent, /title="4 participants" aria-label="4 participants" role="img"/);
|
||||
|
||||
filterElement.value = '';
|
||||
window.__slopsmithCapabilityInspector.expandedDomains = {};
|
||||
window.__slopsmithCapabilityInspector.domainGraphFilter = 'all';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.expandedDomains = {};
|
||||
window.__feedBackCapabilityInspector.domainGraphFilter = 'all';
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const collapsedFilteredContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(collapsedFilteredContent, /data-domain-graph="playback" data-domain-graph-expanded="false"[\s\S]*?title="3 participants" aria-label="3 participants" role="img"/);
|
||||
});
|
||||
@@ -468,7 +468,7 @@ test('capability inspector drops stale future-domain filter options', () => {
|
||||
|
||||
filter.innerHTML += '<option value="ui.player-panels">ui.player-panels</option>';
|
||||
filter.value = 'ui.player-panels';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
|
||||
assert.equal(filter.value, '');
|
||||
assert.doesNotMatch(filter.innerHTML, /ui\.player-panels/);
|
||||
@@ -492,9 +492,9 @@ test('capability inspector refreshes collapsed counts after runtime capability c
|
||||
|
||||
currentSnapshot = {
|
||||
...currentSnapshot,
|
||||
participants: [{ pluginId: 'core' }, { pluginId: 'window.slopsmith.libraryProviders.refresh' }, { pluginId: 'remote_library_client' }],
|
||||
participants: [{ pluginId: 'core' }, { pluginId: 'window.feedBack.libraryProviders.refresh' }, { pluginId: 'remote_library_client' }],
|
||||
compatibilityShims: [
|
||||
{ shimId: 'runtime:library:refresh:window.slopsmith.libraryProviders.refresh', source: 'window.slopsmith.libraryProviders.refresh', capability: 'library', legacySurface: 'refresh', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:refresh:window.feedBack.libraryProviders.refresh', source: 'window.feedBack.libraryProviders.refresh', capability: 'library', legacySurface: 'refresh', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:select:remote_library_client', source: 'remote_library_client', capability: 'library', legacySurface: 'select', status: 'used', hitCount: 1 },
|
||||
],
|
||||
expectedCompatibilityShims: [
|
||||
@@ -502,7 +502,7 @@ test('capability inspector refreshes collapsed counts after runtime capability c
|
||||
{ capability: 'library', legacySurface: 'select', reason: 'legacy library provider selector calls are counted as library.select command use' },
|
||||
],
|
||||
};
|
||||
window.dispatchEvent(new window.CustomEvent('slopsmith:capabilities:changed'));
|
||||
window.dispatchEvent(new window.CustomEvent('feedBack:capabilities:changed'));
|
||||
|
||||
const refreshedContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(refreshedContent, /data-domain-graph="library" data-domain-graph-expanded="false"[\s\S]*?title="2 participants"/);
|
||||
@@ -518,7 +518,7 @@ test('capability inspector links library legacy command surfaces to canonical en
|
||||
],
|
||||
participants: [{ pluginId: 'core' }],
|
||||
compatibilityShims: [
|
||||
{ shimId: 'runtime:library:refresh:window.slopsmith.libraryProviders.refresh', source: 'window.slopsmith.libraryProviders.refresh', capability: 'library', legacySurface: 'refresh', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:refresh:window.feedBack.libraryProviders.refresh', source: 'window.feedBack.libraryProviders.refresh', capability: 'library', legacySurface: 'refresh', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:select:remote_library_client', source: 'remote_library_client', capability: 'library', legacySurface: 'select', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:sync-song:remote_library_client', source: 'remote_library_client', capability: 'library', legacySurface: 'sync-song', status: 'used', hitCount: 1 },
|
||||
],
|
||||
@@ -532,9 +532,9 @@ test('capability inspector links library legacy command surfaces to canonical en
|
||||
const filter = elements.get('capability-inspector-filter');
|
||||
|
||||
filter.value = 'library';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const libraryContent = elements.get('capability-inspector-content').innerHTML;
|
||||
assert.match(libraryContent, /data-domain-participant-card="window\.slopsmith\.libraryProviders\.refresh"/);
|
||||
assert.match(libraryContent, /data-domain-participant-card="window\.feedBack\.libraryProviders\.refresh"/);
|
||||
assert.match(libraryContent, /data-domain-participant-card="remote_library_client"/);
|
||||
assert.match(libraryContent, /data-link-kind="shimmed"[^>]*>refresh<\/span>/);
|
||||
assert.match(libraryContent, /data-link-kind="shimmed"[^>]*>select<\/span>/);
|
||||
@@ -575,7 +575,7 @@ test('selected domain participant count includes shim-only graph participants',
|
||||
],
|
||||
participants: [{ pluginId: 'core' }],
|
||||
compatibilityShims: [
|
||||
{ shimId: 'runtime:library:refresh:window.slopsmith.libraryProviders.refresh', source: 'window.slopsmith.libraryProviders.refresh', capability: 'library', legacySurface: 'refresh', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:refresh:window.feedBack.libraryProviders.refresh', source: 'window.feedBack.libraryProviders.refresh', capability: 'library', legacySurface: 'refresh', status: 'used', hitCount: 1 },
|
||||
{ shimId: 'runtime:library:select:remote_library_client', source: 'remote_library_client', capability: 'library', legacySurface: 'select', status: 'used', hitCount: 1 },
|
||||
],
|
||||
expectedCompatibilityShims: [],
|
||||
@@ -583,12 +583,12 @@ test('selected domain participant count includes shim-only graph participants',
|
||||
const { window, elements } = loadInspector(snapshot);
|
||||
const filter = elements.get('capability-inspector-filter');
|
||||
filter.value = 'library';
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const selectedContent = elements.get('capability-inspector-content').innerHTML;
|
||||
|
||||
assert.match(selectedContent, /title="2 participants"/);
|
||||
assert.doesNotMatch(selectedContent, /2 Participants/);
|
||||
assert.match(selectedContent, /data-domain-participant-card="window\.slopsmith\.libraryProviders\.refresh"/);
|
||||
assert.match(selectedContent, /data-domain-participant-card="window\.feedBack\.libraryProviders\.refresh"/);
|
||||
assert.match(selectedContent, /data-domain-participant-card="remote_library_client"/);
|
||||
});
|
||||
|
||||
@@ -604,9 +604,9 @@ test('capability inspector renders audio-mix fader diagnostics from audio-sessio
|
||||
expectedCompatibilityShims: [],
|
||||
};
|
||||
const { window, elements } = loadInspector(snapshot);
|
||||
window.slopsmith.audioSession = {
|
||||
window.feedBack.audioSession = {
|
||||
snapshot: () => ({
|
||||
schema: 'slopsmith.audio_session.diagnostics.v1',
|
||||
schema: 'feedBack.audio_session.diagnostics.v1',
|
||||
session: { route: { routeKind: 'desktop', availability: 'degraded' }, analyser: { source: 'plugin', availability: 'available' } },
|
||||
domains: {
|
||||
'audio-mix': {
|
||||
@@ -627,7 +627,7 @@ test('capability inspector renders audio-mix fader diagnostics from audio-sessio
|
||||
}),
|
||||
};
|
||||
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const content = elements.get('capability-inspector-content').innerHTML;
|
||||
|
||||
assert.match(content, /data-audio-session-support/);
|
||||
@@ -649,9 +649,9 @@ test('capability inspector renders audio-input sources selection sessions bridge
|
||||
expectedCompatibilityShims: [],
|
||||
};
|
||||
const { window, elements } = loadInspector(snapshot);
|
||||
window.slopsmith.audioSession = {
|
||||
window.feedBack.audioSession = {
|
||||
snapshot: () => ({
|
||||
schema: 'slopsmith.audio_session.diagnostics.v1',
|
||||
schema: 'feedBack.audio_session.diagnostics.v1',
|
||||
session: { route: { routeKind: 'html5', availability: 'available' }, analyser: { source: 'none', availability: 'unavailable' } },
|
||||
domains: {
|
||||
'audio-mix': { participants: [], faders: [], route: { routeKind: 'html5', availability: 'available' }, analyser: { source: 'none', availability: 'unavailable' }, bridges: [] },
|
||||
@@ -673,7 +673,7 @@ test('capability inspector renders audio-input sources selection sessions bridge
|
||||
}),
|
||||
};
|
||||
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const content = elements.get('capability-inspector-content').innerHTML;
|
||||
|
||||
assert.match(content, /Input: Input 1:available:mono:native, Legacy Input:available:stereo:compatibility:superseded/);
|
||||
@@ -695,9 +695,9 @@ test('capability inspector renders audio-monitoring providers sessions direct mo
|
||||
expectedCompatibilityShims: [],
|
||||
};
|
||||
const { window, elements } = loadInspector(snapshot);
|
||||
window.slopsmith.audioSession = {
|
||||
window.feedBack.audioSession = {
|
||||
snapshot: () => ({
|
||||
schema: 'slopsmith.audio_session.diagnostics.v1',
|
||||
schema: 'feedBack.audio_session.diagnostics.v1',
|
||||
session: { route: { routeKind: 'desktop', availability: 'available' }, analyser: { source: 'plugin', availability: 'available' } },
|
||||
domains: {
|
||||
'audio-mix': { participants: [], faders: [], route: { routeKind: 'desktop', availability: 'available' }, analyser: { source: 'plugin', availability: 'available' }, bridges: [] },
|
||||
@@ -726,7 +726,7 @@ test('capability inspector renders audio-monitoring providers sessions direct mo
|
||||
}),
|
||||
};
|
||||
|
||||
window.__slopsmithCapabilityInspector.render();
|
||||
window.__feedBackCapabilityInspector.render();
|
||||
const content = elements.get('capability-inspector-content').innerHTML;
|
||||
|
||||
assert.match(content, /Monitoring providers: Native Monitor:available:native, Legacy Monitor:available:compatibility:superseded/);
|
||||
|
||||
Reference in New Issue
Block a user