Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
543ef59
feat(WS-5): replace N+1 graph walks with SPARQL model methods
HexaField Apr 20, 2026
5d8a540
feat(WS-6): add ChannelSummary and MessageSummary lightweight read mo…
HexaField Apr 20, 2026
5b71137
feat(WS-3): fix query scoping in composables
HexaField Apr 20, 2026
8f1b6e5
feat(WS-4): replace raw listeners with scoped live queries
HexaField Apr 20, 2026
b75e9da
fix: strip comments in structural tests to avoid false positives
HexaField Apr 20, 2026
df99ce3
refactor: replace workstream references with descriptive comments
HexaField Apr 20, 2026
ac45650
fix(api): use GROUP BY aggregation in recentConversations() SPARQL
HexaField Apr 20, 2026
93eb2fb
fix(app): add concurrency guard to refreshAllData()
HexaField Apr 20, 2026
7d99cb0
fix(test): harden scoping tests to fail on regex mismatch
HexaField Apr 20, 2026
4af6d86
refactor(timeline): replace refreshAllData with reactive watchEffect …
HexaField Apr 20, 2026
e57359f
refactor(test): replace Jest with Vitest, rewrite structural tests as…
HexaField Apr 20, 2026
9e8d299
fix: revert ad4m overrides from file: paths back to version refs
HexaField Apr 20, 2026
e4981dd
ci: retrigger Netlify deploy (file: overrides reverted)
HexaField Apr 20, 2026
e9c8142
fix: revert packages/ui/meta.json to dev state (auto-generated)
HexaField Apr 21, 2026
8cd9a78
fix: regenerate pnpm-lock.yaml cleanly (remove build-script residue)
HexaField Apr 21, 2026
5441db5
ci: trigger rebuild and Netlify redeploy
HexaField Apr 21, 2026
f502a4a
fix: commit uncommitted feat branch changes (CreateCommunityModal, lo…
HexaField Apr 21, 2026
1162ad2
Merge remote-tracking branch 'github/dev' into feat/architectural-opt…
HexaField Apr 21, 2026
7e2cc98
ci: retrigger Netlify deploy after AD4M review fixes
HexaField Apr 21, 2026
2b1fdc7
ci: retrigger Netlify deploy
HexaField Apr 21, 2026
bf3f620
fix: regenerate pnpm-lock.yaml without file: overrides (fixes Netlify…
HexaField Apr 21, 2026
48aab0c
fix: SPARQL literal matching + Vue proxy safety for imported perspect…
HexaField Apr 22, 2026
e839634
feat: migrate custom SPARQL queries from GRAPH to RDF 1.2 reifier pat…
HexaField Apr 23, 2026
7749dbd
fix: handle private:// prefix and plain UUIDs in community routes
HexaField Apr 23, 2026
194936b
fix: guard against undefined channel in sidebar and community view te…
HexaField Apr 23, 2026
3bf1d94
fix: prefer transcript_started_at over link timestamp for transcripti…
HexaField Apr 26, 2026
a1f2d60
ci: retrigger Netlify deploy
HexaField Apr 27, 2026
3e54d28
ci: retrigger Netlify deploy (target: dev)
HexaField Apr 27, 2026
fe411c3
Merge remote-tracking branch 'origin/dev' into feat/sparql-1.2
HexaField Apr 27, 2026
f71830a
Merge branch 'feat/sparql-1.2' of https://github.com/coasys/flux into…
HexaField Apr 27, 2026
6dc9b66
ci: add lint + typecheck to CI workflows
HexaField Apr 27, 2026
ca30111
fix: use targeted SPARQL subscription for channel item updates
HexaField Apr 27, 2026
363b267
fix: address CodeRabbit review feedback
HexaField Apr 27, 2026
d3acbfb
fix: populate conversation cache in getRecentConversations/getPinnedC…
HexaField Apr 28, 2026
1abff18
fix: update channel view handling to use fullChannel instance for per…
HexaField Apr 28, 2026
185159d
fix: enhance conversation hydration in community service for better s…
HexaField Apr 28, 2026
21c3d66
fix: guard async channel watchers against stale responses
HexaField Apr 28, 2026
0704801
fix: use shallowRef for myPerspectives to prevent Vue Proxy breaking …
HexaField Apr 29, 2026
af67058
feat: convert Prolog queries to SPARQL (Phase 4)
HexaField Apr 28, 2026
5a11363
feat: replace addListener with targeted subscribeQuery (Phases 5+6)
HexaField Apr 29, 2026
7d2f758
fix: eliminate N+1 query patterns in PollCard and useCommunityService
HexaField Apr 29, 2026
e4d3bf6
feat: migrate kanban-view + table-view from Prolog to SHACL APIs (Pha…
HexaField Apr 29, 2026
ba306c1
chore: replace remaining addListener with subscribeQuery, remove dead…
HexaField Apr 29, 2026
8f2b8a5
feat: Phase 11 — remove usePerspectives link bus
HexaField Apr 29, 2026
1e599e8
ci: retrigger after AD4M hooks-helpers fix
HexaField Apr 29, 2026
6bac137
ci: override all AD4M hook packages in linked builds
HexaField Apr 29, 2026
8220753
debug: add CI diagnostic output to conversation tests
HexaField Apr 29, 2026
fa212d4
chore: remove CI debug logging from conversation tests
HexaField Apr 29, 2026
13550a3
fix: restore missing useRoute import in MainView.vue
HexaField Apr 29, 2026
ed365f3
fix: subscription type mismatch, local SDK linking, channel prefix st…
HexaField Apr 29, 2026
ba12ab5
fix(ui): use lit/directives instead of lit-html/directives for ifDefined
HexaField Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ jobs:
pkg.pnpm.overrides = pkg.pnpm.overrides || {};
pkg.pnpm.overrides['@coasys/ad4m'] = 'file:./ad4m/core';
pkg.pnpm.overrides['@coasys/ad4m-connect'] = 'file:./ad4m/connect';
pkg.pnpm.overrides['@coasys/hooks-helpers'] = 'file:./ad4m/ad4m-hooks/helpers';
pkg.pnpm.overrides['@coasys/ad4m-react-hooks'] = 'file:./ad4m/ad4m-hooks/react';
pkg.pnpm.overrides['@coasys/ad4m-vue-hooks'] = 'file:./ad4m/ad4m-hooks/vue';
require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');
"

Expand All @@ -111,8 +114,15 @@ jobs:
rm -rf app/node_modules/.vite .turbo node_modules/.cache
find . -name '.turbo' -type d -not -path './ad4m/*' -not -path './node_modules/*' -exec rm -rf {} + 2>/dev/null || true

- name: Lint
run: pnpm lint

- name: Build
run: NODE_OPTIONS='--max-old-space-size=4096' pnpm build

- name: Type check (informational)
continue-on-error: true
run: pnpm typecheck

- name: Test
run: pnpm test --filter @coasys/flux-api
10 changes: 10 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,24 @@ jobs:
pkg.pnpm.overrides = pkg.pnpm.overrides || {};
pkg.pnpm.overrides['@coasys/ad4m'] = 'file:./ad4m/core';
pkg.pnpm.overrides['@coasys/ad4m-connect'] = 'file:./ad4m/connect';
pkg.pnpm.overrides['@coasys/hooks-helpers'] = 'file:./ad4m/ad4m-hooks/helpers';
pkg.pnpm.overrides['@coasys/ad4m-react-hooks'] = 'file:./ad4m/ad4m-hooks/react';
pkg.pnpm.overrides['@coasys/ad4m-vue-hooks'] = 'file:./ad4m/ad4m-hooks/vue';
require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');
"

- name: Install dependencies
run: pnpm install --no-frozen-lockfile

- name: Lint
run: pnpm lint

- name: Build
run: NODE_OPTIONS='--max-old-space-size=4096' pnpm build

- name: Type check (informational)
continue-on-error: true
run: pnpm typecheck

- name: Test
run: pnpm test --filter @coasys/flux-api
3 changes: 2 additions & 1 deletion app/.eslintignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
../ad4m
../ad4m-types
vue.config.js
vue.config.js
src/views/signup/perlin.js
2 changes: 1 addition & 1 deletion app/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module.exports = {
env: {
node: true,
},
extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/typescript/recommended', '@vue/prettier'],
extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/typescript/recommended'],
parserOptions: {
ecmaVersion: 2020,
},
Expand Down
4 changes: 3 additions & 1 deletion app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"build": "NODE_OPTIONS='--max-old-space-size=4096' vite build",
"preview": "vite preview",
"lint": "eslint src/**/*.ts src/**/*.js src/**/*.vue",
"typecheck": "vue-tsc --noEmit",
"test": "jest --env=jsdom"
},
"main": "background.js",
Expand Down Expand Up @@ -95,6 +96,7 @@
"vite-plugin-babel-compiler": "^0.3.0",
"vite-plugin-pwa": "^0.14.7",
"vite-plugin-worker": "^1.0.5",
"vue-devtools": "^5.1.4"
"vue-devtools": "^5.1.4",
"vue-tsc": "^3.2.7"
}
}
10 changes: 4 additions & 6 deletions app/src/components/conversation/timeline/TimelineBlock.vue
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@
:match-indexes="matchIndexes"
:set-match-indexes="setMatchIndexes"
:zoom="zoom"
:refresh-trigger="refreshTrigger"
:selected-topic-id="selectedTopicId"
:selected-item-id="selectedItemId"
:set-selected-item-id="setSelectedItemId"
Expand Down Expand Up @@ -197,7 +196,6 @@ interface Props {
matchIndexes?: MatchIndexes;
setMatchIndexes?: (indexes: MatchIndexes) => void;
zoom?: GroupingOption;
refreshTrigger?: number;
selectedItemId?: string;
setSelectedItemId?: (id: string | null) => void;
search?: (type: SearchType, itemId: string, topic?: SynergyTopic) => void;
Expand Down Expand Up @@ -411,9 +409,9 @@ function onGroupClick() {
}
}

// Get stats on first load and whenever refresh triggered if last child
// Get stats on first load and whenever data changes if last child
watch(
() => props.refreshTrigger,
() => props.data,
() => {
if (firstLoad.value || props.lastChild) {
firstLoad.value = false;
Expand All @@ -424,9 +422,9 @@ watch(
{ immediate: true },
);

// Get data when expanding children or refresh triggered & children expanded
// Get data when expanding children or data changes while children expanded
watch(
[() => showChildren.value, () => props.refreshTrigger],
[() => showChildren.value, () => props.data],
() => {
// False on first load. Updated when zoom useEffect below fires and later when children are expanded by user
if (showChildren.value) {
Expand Down
Loading
Loading