gabriel / musehub public
app.ts typescript
108 lines 4.9 KB
Raw
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2 feat: add repair-commit wire endpoint (API parity with repa… Opus 4.8 minor ⚠ breaking 1 day ago
1 /**
2 * app.ts — MuseHub frontend entry point.
3 *
4 * Bundled by esbuild into static/app.js (IIFE format).
5 * Each module attaches its public API to `window` for use in
6 * Jinja2 templates that call e.g. togglePlay(), saveToken(), etc.
7 *
8 * Page modules register on window.MusePages and are dispatched by
9 * musehub.ts → dispatchPageModule() after every page load / HTMX swap.
10 */
11
12 import './musehub.ts';
13 import './alpine-components.ts';
14
15 import { initRepoPage } from './pages/repo-page.ts';
16 import { initIssueList } from './pages/issue-list.ts';
17 import { initNewRepo } from './pages/new-repo.ts';
18 import { initCommitDetail } from './pages/commit-detail.ts';
19 import { initUserProfile } from './pages/user-profile.ts';
20 import { initProposalDetail } from './pages/proposal-detail.ts';
21 import { initCommits } from './pages/commits.ts';
22 import { initIssueDetail } from './pages/issue-detail.ts';
23 import { initReleaseDetail } from './pages/release-detail.ts';
24 import { initDomainDetail } from './pages/domain-detail.ts';
25 import { initDiff } from './pages/diff.ts';
26 import { initSettings } from './pages/settings.ts';
27 import { initExplore } from './pages/explore.ts';
28 import { initBranches } from './pages/branches.ts';
29 import { initTags } from './pages/tags.ts';
30 import { initSessions } from './pages/sessions.ts';
31 import { initReleaseList } from './pages/release-list.ts';
32 import { initBlob } from './pages/blob.ts';
33 import { initTree } from './pages/tree.ts';
34 import { initMcpDocs } from './pages/mcp-docs.ts';
35 import { initDomains } from './pages/domains.ts';
36 import { initTopics } from './pages/topics.ts';
37 import { initProposalList } from './pages/proposal-list.ts';
38 import { initSymbols } from './pages/symbols.ts';
39 import { initFeed } from './pages/feed.ts';
40 import { initTimeline } from './pages/timeline.ts';
41 import { initActivity } from './pages/activity.ts';
42 import { initMistList } from './pages/mist-list.ts';
43 import { initMistDetail } from './pages/mist-detail.ts';
44 import { initDocs } from './pages/docs.ts';
45 import { initAgentsCoord } from './pages/agents-coord.ts';
46 import { initBlame } from './pages/blame.ts';
47
48 // Register page modules — keyed by the "page" field in the #page-data JSON.
49 type PageData = Record<string, unknown>;
50
51 const MusePages: Record<string, (data: PageData) => void | Promise<void>> = {
52 'repo': (d) => initRepoPage(d),
53 'issue-list': (d) => initIssueList(d),
54 'new-repo': (d) => initNewRepo(d),
55 'commit-detail': () => initCommitDetail(),
56 'user-profile': (d) => void initUserProfile(d),
57 'global-search': () => {},
58 'proposal-detail': (d) => initProposalDetail(d),
59 'commits': (d) => initCommits(d),
60 'issue-detail': (d) => initIssueDetail(d),
61 'release-detail': (d) => initReleaseDetail(d),
62 'domain-detail': (d) => initDomainDetail(d),
63 'diff': () => initDiff(),
64 'settings': (d) => initSettings(d),
65 'explore': () => initExplore(),
66 'branches': () => initBranches(),
67 'tags': () => initTags(),
68 'sessions': () => initSessions(),
69 'release-list': () => initReleaseList(),
70 'blob': (d) => initBlob(d),
71 'tree': (d) => initTree(d),
72 'mcp-docs': () => initMcpDocs(),
73 'domains': () => initDomains(),
74 'topics': (d) => initTopics(d),
75 'proposal-list': (d) => initProposalList(d),
76 'symbols': () => initSymbols(),
77 'feed': () => initFeed(),
78 'timeline': (d) => initTimeline(d),
79 'activity': () => initActivity(),
80 'mist-list': (d) => initMistList(d),
81 'mist-detail': (d) => initMistDetail(d),
82 'docs': () => initDocs(),
83 'docs-getting-started': () => initDocs(),
84 'docs-wire': () => initDocs(),
85 'docs-mcp': () => initDocs(),
86 'docs-shelves': () => initDocs(),
87 'docs-coordination': () => initDocs(),
88 'docs-harmony': () => initDocs(),
89 'docs-foundations': () => initDocs(),
90 'docs-domains': () => initDocs(),
91 'docs-api': () => initDocs(),
92 'docs-intelligence': () => initDocs(),
93 'docs-identity': () => initDocs(),
94 'docs-mists': () => initDocs(),
95 'docs-profiles': () => initDocs(),
96 'agents-coord': (d) => initAgentsCoord(d),
97 'blame': (d) => initBlame(d),
98 };
99
100 // Attach to window so musehub.ts dispatchPageModule() can reach it.
101 (window as unknown as { MusePages: typeof MusePages }).MusePages = MusePages;
102
103 // ── Theme toggle ──────────────────────────────────────────────────────────────
104 // Delegated to document — survives hx-boost body swaps without rebinding.
105
106 import { initThemeBtn, applyStoredTheme } from './theme';
107 applyStoredTheme();
108 initThemeBtn();
File History 1 commit
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2 feat: add repair-commit wire endpoint (API parity with repa… Opus 4.8 minor 1 day ago