Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
328 commits
Select commit Hold shift + click to select a range
7bacb60
The Table chart fills the block width like its SVG siblings: ac:draw-…
namedgraph Aug 28, 2026
ec1a434
View event handlers resolve their client-side cache through a single …
namedgraph Aug 28, 2026
ff29c5c
Content-column alignment survives classic scrollbars: the address bar…
namedgraph Aug 29, 2026
d05fe16
The facet pill's predicate label sheds the pred class: app.css styles…
namedgraph Aug 29, 2026
c0bac68
Read-mode property lists become name-value groups: bs2:PropertyListId…
namedgraph Aug 29, 2026
8b644a0
View table sortable columns read at rest and the property-list hover …
namedgraph Aug 29, 2026
27ebce8
View table rows highlight on hover: tbody tr:hover paints its cells a…
namedgraph Aug 29, 2026
982e672
View sort's numeric keys yield empty sequence instead of NaN for non-…
namedgraph Aug 29, 2026
25730b7
The view's client-side sort keys off each column's XSD datatype, thro…
namedgraph Aug 29, 2026
a03c0f0
The map marker info window becomes the card itself: .ol-overlay-conta…
namedgraph Aug 29, 2026
162316a
The info window's block head aligns with the property list below it: …
namedgraph Aug 29, 2026
0187c8f
The XSD datatype enumeration behind the view sort moves into ldh:data…
namedgraph Aug 29, 2026
c4a27b8
Timestamp handling gets one ldh:date-time(), retiring the date-or-dat…
namedgraph Aug 29, 2026
d9f10a7
The DataTable converters recognise the derived numeric and dateTime t…
namedgraph Aug 29, 2026
8f8ce7a
Image objects render at a height the surface picks rather than the on…
namedgraph Aug 29, 2026
3774429
The vendored typefaces gain their latin-ext subsets, so Latin Extende…
namedgraph Aug 29, 2026
e38f693
The edit pencil on a resource description appears only under acl:Writ…
namedgraph Aug 29, 2026
2bd87e6
One navigation leaves one history entry. After a document load, ldh:r…
namedgraph Aug 29, 2026
e2b902c
CSR failures render through the design system's block-states componen…
namedgraph Aug 29, 2026
431fb08
The busy cursor becomes a promise concern. Raising it was 53 copies o…
namedgraph Aug 29, 2026
c6836f3
Three legacy ixsl:schedule-action http-request callbacks become promi…
namedgraph Aug 29, 2026
1440438
Parallax chips stop being read off the loaded page and are discovered…
namedgraph Aug 29, 2026
ef14806
A quiet block no longer lifts under the cursor. The hover elevation w…
namedgraph Aug 29, 2026
0eda7e0
The rdf:type pill follows the type rather than the type list. Web-Cli…
namedgraph Aug 29, 2026
fe0b50e
A chart over an empty result set says so in the design system's empty…
namedgraph Aug 30, 2026
1d79c84
An empty block says so in its header as well as its body. The design …
namedgraph Aug 30, 2026
d986d4b
The two RDF/POST subject-control handlers move out of JavaScript into…
namedgraph Aug 30, 2026
e409c41
The DOMContentLoaded block retires: half of it was doing nothing, the…
namedgraph Aug 30, 2026
40b64c8
A press anywhere dismisses the drop-downs it is not inside, which clo…
namedgraph Aug 30, 2026
60ae436
The drop-down dismissal moves to where a modal is actually mounted, a…
namedgraph Aug 30, 2026
0320628
ac:uuid() generates through the platform, and the seven call sites th…
namedgraph Aug 30, 2026
b617807
The query block's Chart/View strip becomes the design system's tab co…
namedgraph Aug 30, 2026
437a16e
Charts and views are both creatable from a query block now, and both …
namedgraph Aug 30, 2026
25ced7e
The row form is inserted with xsl:result-document rather than the DOM…
namedgraph Aug 30, 2026
1912d21
Two faults in the block-creation merge, both found by driving the cas…
namedgraph Aug 30, 2026
ab472f2
Editing a query into a different form now retypes it, and a rejected …
namedgraph Aug 30, 2026
f970956
The violation renderer goes back to failing on an absent form, becaus…
namedgraph Aug 30, 2026
ef5125f
The map info window pans itself into view, so the view controls no lo…
namedgraph Aug 30, 2026
c1e7a28
The marker info window is fitted into the map viewport itself, replac…
namedgraph Aug 30, 2026
4995785
The parallax glyph sits on the same line as the first pivot chip. Bot…
namedgraph Aug 30, 2026
54243b3
Marker clicks pan the map again, and one info window replaces another…
namedgraph Aug 30, 2026
17a2990
The hang in the previous commit was a wrong type on the pixel read. o…
namedgraph Aug 30, 2026
53838b9
[maven-release-plugin] prepare for next development iteration
namedgraph Aug 30, 2026
919f7f4
Set the CLI version to 5.10.1-SNAPSHOT
namedgraph Aug 30, 2026
1b839b3
Post-release version bump
namedgraph Aug 30, 2026
8a4ba99
Stop release.sh publishing before it knows the git half can finish
namedgraph Aug 30, 2026
127358d
Declare package ontologies as owl:imports instead of grafting them
namedgraph Aug 30, 2026
a307b74
Cover package ontology composition in the imports characterization test
namedgraph Aug 31, 2026
0a36174
Keep the server's render on the initial load
namedgraph Aug 31, 2026
7a60dce
The row form opens on its first required control whatever kind of con…
namedgraph Aug 31, 2026
d6f7c3a
The metadata merge keys on the RDF term, not the lexical form, so a t…
namedgraph Aug 31, 2026
527850d
Property lists order their values by the reader's language instead of…
namedgraph Aug 31, 2026
9a2a76e
Drop the Bootstrap 2 class vocabulary that no stylesheet backs, and g…
namedgraph Aug 31, 2026
efe5be0
Responses advertise that they vary by Accept-Language, so a rendering…
namedgraph Aug 31, 2026
6899378
Revert "Responses advertise that they vary by Accept-Language, so a r…
namedgraph Aug 31, 2026
3f75858
Predicate labels come from the application ontology on the server ren…
namedgraph Aug 31, 2026
ab141f4
Property values declare their own language instead of inheriting the …
namedgraph Sep 1, 2026
e47ac2f
Complete the Spanish translations, so the bundle covers every UI stri…
namedgraph Sep 1, 2026
a81788e
Supported UI languages are derived from the translation bundle instea…
namedgraph Sep 1, 2026
e6f95e8
The page reports the language it is written in, and Content-Language …
namedgraph Sep 1, 2026
bb7c8b5
Predicate labels declare their negotiated language, so they survive t…
namedgraph Sep 1, 2026
1904891
Move the language negotiation out of Application into its own utility.
namedgraph Sep 1, 2026
a2b136f
The writer reads the language off the response instead of negotiating…
namedgraph Sep 1, 2026
1969fe4
The document's lang attribute derives from the Content-Language it is…
namedgraph Sep 1, 2026
fcde58c
Document responses pass the accepted languages, so their entity tags …
namedgraph Sep 1, 2026
910ad0b
Only label the language of representations whose rendering depends on…
namedgraph Sep 1, 2026
fda1dd4
The language sort key comes from Web-Client, so there is one of it ra…
namedgraph Sep 2, 2026
2e4f36f
Drop ldt:lang, which nothing declares, reads or writes.
namedgraph Sep 2, 2026
2900a33
Cover the response filter's hypermedia, not only the language it labe…
namedgraph Sep 2, 2026
7cb82e7
Assert the language rules over HTTP, where the header and the documen…
namedgraph Sep 2, 2026
cfeffca
Don't use getter in constructor
namedgraph Sep 2, 2026
49482fe
Publish the shortest language tag the bundle justifies, not the key i…
namedgraph Sep 2, 2026
76851a3
Read the browser's languages through ac:langs(), so client.xsl declar…
namedgraph Sep 2, 2026
b1c2cb0
Merge rf-design-system into develop
namedgraph Sep 2, 2026
eea26fd
CHANGELOG update
namedgraph Sep 2, 2026
ed99116
Chain versioning commits per branch, since the Contents API locks the…
namedgraph Sep 2, 2026
149bc9c
Wait on the commit listing, since GitHub indexes it behind the file i…
namedgraph Sep 2, 2026
3aeaee2
A table cell's values stack apart, divided the way a property's value…
namedgraph Sep 2, 2026
96ecf5d
The CLI reaches a document's Memento roles, the TimeGate included.
namedgraph Sep 2, 2026
b63cd1e
The tests stop narrating themselves.
namedgraph Sep 2, 2026
6ced7d2
CHANGELOG update
namedgraph Sep 2, 2026
20b66cb
Web-Client bump
namedgraph Sep 2, 2026
991d252
An error page drops the action bar, which had nothing left to hold.
namedgraph Sep 2, 2026
54f955f
A language tag reads the same wherever a value is laid out.
namedgraph Sep 2, 2026
103f289
An injected view block's subject keeps the hash that makes it a fragm…
namedgraph Sep 2, 2026
ffbc225
A view block derived from the ontology keeps its URI across reloads.
namedgraph Sep 2, 2026
6003541
Merge branch 'master' into develop
namedgraph Sep 2, 2026
fcd529f
Merge branch 'develop' of github.com:AtomGraph/LinkedDataHub into dev…
namedgraph Sep 2, 2026
8ab9533
Preformatted prose sits on the code surface the rest of the system uses.
namedgraph Sep 2, 2026
11fe1bd
The property-list grid keys on the wrapped dt/dd shape, leaving prose…
namedgraph Sep 2, 2026
c2d0947
A drop-down opens into the side that has room for it, on both axes.
namedgraph Sep 2, 2026
34430e5
Packages are reachable from the CLI, not only from the settings modal.
namedgraph Sep 3, 2026
79588ee
The next release is 6.0.0, and the changelog catches up with what has…
namedgraph Sep 3, 2026
4b4e2b9
An oversized literal no longer crashes the transform it is a grouping…
namedgraph Sep 3, 2026
482d6ec
Authored markup survives the canonical form, so a tab group round-trips.
namedgraph Sep 3, 2026
69edd9a
Clicking out of an editor that was not edited exits it instead of sav…
namedgraph Sep 3, 2026
44f777c
The client adopts the SaxonJS 3 result-document methods, retiring the…
namedgraph Sep 3, 2026
1b5191f
Signup renders on both products, and constructor instantiation become…
namedgraph Sep 3, 2026
ab57740
Clicking the canvas between blocks moves the caret instead of leaving…
namedgraph Sep 3, 2026
178d70a
Seed authorizations drop the retired /add and /generate endpoints.
namedgraph Sep 4, 2026
7326cd8
Constraint violations decorate the affected fields instead of stackin…
namedgraph Sep 4, 2026
c3bab82
The last inline Copy URI button delegates to the shared ldh:CopyUriBu…
namedgraph Sep 4, 2026
bfc6024
Edit forms adopt the design system's whole-form mode: single-label ce…
namedgraph Sep 4, 2026
5c23110
The remaining legacy modals ride the ldhc-backdrop chrome, and the st…
namedgraph Sep 4, 2026
bc3c95a
Read-mode property lists reinstate the dl/dt/dd carriers: a resource …
namedgraph Sep 4, 2026
030174f
The ldh commands regroup by verb: create, add and remove make the sin…
namedgraph Sep 4, 2026
25a0e8f
put and post take an optional FILE argument and recognize the RDF syn…
namedgraph Sep 5, 2026
d1d3895
Entering an editor always leaves focus inside it, so clicking out exits.
namedgraph Sep 5, 2026
2fb9883
A collection of resources renders as ul/li, so the rows and cards of …
namedgraph Sep 6, 2026
bcf4943
The result-count badge and the first-time hero ride the design system…
namedgraph Sep 6, 2026
0308844
Every remaining Bootstrap alert adopts the design system's InlineAler…
namedgraph Sep 6, 2026
ae8e9a2
Block-loading progress rides the design system's ProgressBar anatomy:…
namedgraph Sep 6, 2026
497dada
The last hand-rolled typeahead lists become bs2:Lookup comboboxes, an…
namedgraph Sep 6, 2026
0348239
The retired .progress rule was also the loading shutter: its height/o…
namedgraph Sep 6, 2026
6484cdf
The loading bar steps up to the pbar's sm track: xs is half the weigh…
namedgraph Sep 6, 2026
70f18aa
Every remaining Bootstrap form row adopts the design system's prop-gr…
namedgraph Sep 6, 2026
8ccd3d8
The add-data items move into the Actions drop-down: acl:Append author…
namedgraph Sep 6, 2026
0ed7683
The XHTML editor opts out of the whole-form chrome that fits compact …
namedgraph Sep 6, 2026
aadd791
Seeding a modal's lookup mirrors the committed chip's edit button in …
namedgraph Sep 6, 2026
3fccec3
The read-mode prop grid carries its RDFa on the .value cell instead o…
namedgraph Sep 6, 2026
0f9f7fb
The chart and query blocks adopt the design system's block contracts,…
namedgraph Sep 7, 2026
ba6d2da
The search modal becomes the design's flush dialog: an icon-and-eyebr…
namedgraph Sep 7, 2026
6b616dc
The facet cluster adopts the design's FacetDropdown contract, and a r…
namedgraph Sep 7, 2026
b130f26
The stack makes its clean break from bs2: against Web-Client 6.0.0-SN…
namedgraph Sep 7, 2026
2715e07
LinkedDataHub re-resolves Web-Client's label catalog against the shel…
namedgraph Sep 7, 2026
189fd2a
Three mangled lines from the design-system sync (a duplicated selecto…
namedgraph Sep 8, 2026
a6e88b2
A component is emitted by exactly one template, and the type pill is …
namedgraph Sep 8, 2026
015bb02
The app layer rides Web-Client's new form-chrome emitters and adds it…
namedgraph Sep 8, 2026
6e55cbf
The overlay and notice chrome converges on shared emitters: every han…
namedgraph Sep 8, 2026
4d39459
The modal dialog becomes one shell: ldh:Modal takes size, icon/eyebro…
namedgraph Sep 8, 2026
3094841
Two bridge comments still narrated the retired bs2: mode names (the b…
namedgraph Sep 8, 2026
a7dc2be
The stylesheets stop name-dropping the retired framework: the bridge …
namedgraph Sep 8, 2026
d97dbd5
The nearest-.block lookup gains the [@about] guard wherever the handl…
namedgraph Sep 8, 2026
63b7d74
The empty state leaves the block header and lives in the body alone: …
namedgraph Sep 8, 2026
f1f8e60
The copy-URI button stops copying the object it renders instead of th…
namedgraph Sep 8, 2026
d11c9c7
The design system's consolidation lands (HANDOFF 13-16): app.css re-s…
namedgraph Sep 8, 2026
18a70a2
The Bootstrap vocabulary leaves the DOM contract: the generic dropdow…
namedgraph Sep 8, 2026
3eee5d2
The view toolbar lands the design's consolidation (HANDOFF 15): the l…
namedgraph Sep 8, 2026
233f872
The transitional bridge stylesheet retires: ldh-bridge.css merges int…
namedgraph Sep 8, 2026
64e27bb
The design system's §17-§26 handoff lands. The generic dropdown becom…
namedgraph Sep 8, 2026
8676d7d
The six bare div name tests the drawer's tree-row wrapper introduced …
namedgraph Sep 8, 2026
e6e218e
The drawer opens the way it always has: the mouse reaching the screen…
namedgraph Sep 8, 2026
44e3750
The xsd-typed blank-node literal control joins the shared control wid…
namedgraph Sep 8, 2026
3618161
LDH follows Web-Client's xhtml: narrowing: the shadows and dispatches…
namedgraph Sep 8, 2026
b07edd7
The drawer search is a typable field again: §19's honest search butto…
namedgraph Sep 8, 2026
d0d8a58
The HTTP tests catch up with the clean break, and the package contrac…
namedgraph Sep 8, 2026
df6c024
The generic bare form-field rule retires, and the two mistakes it was…
namedgraph Sep 9, 2026
7aeae6e
The combobox cluster comes home, and the prefix rule that should have…
namedgraph Sep 9, 2026
531c60e
The search modal drops its SPARQL · full-text eyebrow: the mechanism …
namedgraph Sep 9, 2026
22af961
The name audit reaches the seven templates the component sweeps misse…
namedgraph Sep 9, 2026
6cf9fb0
The typeahead vocabulary leaves the combobox's own layer: the Combobo…
namedgraph Sep 9, 2026
0f54f11
Grid mode opts out of the view results scrollport: three rules conspi…
namedgraph Sep 9, 2026
5ee1b86
Charts, maps and 3D graphs render on load again, and the Root select-…
namedgraph Sep 9, 2026
aaaca8f
The PATCH 422 echoes only the violating resources: #308's move to who…
namedgraph Sep 9, 2026
25da317
The block system takes the design system's anatomy, root and branch. …
namedgraph Sep 9, 2026
f78b362
The view block earns its design-system chrome, and a latent correlati…
namedgraph Sep 9, 2026
537b8f4
One header serves every block, and the drag handle moves into it. ac:…
namedgraph Sep 9, 2026
2ebbba4
The shell takes its AppShell anatomy, and every remaining inline disp…
namedgraph Sep 9, 2026
a77c476
Forms shed their state lies, riding the Web-Client shell's new anatom…
namedgraph Sep 9, 2026
972ccb1
The import graph becomes a tree with one shared trunk, answering the …
namedgraph Sep 9, 2026
6b1f83e
merge-rdfxml.xsl comes out of client/ and joins the shared trunk: the…
namedgraph Sep 9, 2026
6b3c15e
Not one ixsl token remains in the server-side closure - not even the …
namedgraph Sep 9, 2026
4668bde
XHTML content blocks shed their header, and instance timestamps leave…
namedgraph Sep 9, 2026
2083fae
The system suite joins the http-tests run: 19 committed auth-boundary…
namedgraph Sep 9, 2026
77902ec
Eight machine-detectable defects from the codebase evaluation's Java …
namedgraph Sep 9, 2026
ed76263
The block identity gets one resolver: the BlockRow/Block split keeps …
namedgraph Sep 9, 2026
37e404d
The Object block sheds its double header, and the content slot gets i…
namedgraph Sep 9, 2026
1624287
SSRF-harden the CSV/RDF import path (validate ldh:file + spin:query) …
namedgraph Sep 9, 2026
07954ed
Downgrade Jersey components to match Jersey version in Core
namedgraph Sep 9, 2026
ff5c1c5
Merge branch 'develop' of github.com:AtomGraph/LinkedDataHub into dev…
namedgraph Sep 9, 2026
fb29897
Fix PATCHed ldh:import not joining the ontology closure (stale app mo…
namedgraph Sep 10, 2026
d7fc5d0
Fix import-internal-url-400: the SSRF import test never reached the s…
namedgraph Sep 10, 2026
1b85081
Enable and repair the system/ http-tests (instrument for diagnosis, f…
namedgraph Sep 10, 2026
f62cc3b
The last Bootstrap 2 tokens leave the platform, and the ones that wer…
namedgraph Sep 10, 2026
5b491be
The content slot's chrome splits along the polarity the block header …
namedgraph Sep 10, 2026
77ae481
The core kit's vocabulary takes the design system's current prefix: 1…
namedgraph Sep 11, 2026
c886124
Grid mode caps its card images again. The rule that made a resource's…
namedgraph Sep 11, 2026
02a5cae
The vendored app kit catches up, and LDH's divergences retire into it…
namedgraph Sep 11, 2026
6299ed6
DataTable gets its table layout back, and the roles that patched arou…
namedgraph Sep 11, 2026
5166b51
The SPARQL results table stops being a second table component. .ldh-r…
namedgraph Sep 11, 2026
a10add2
The view block stops flickering on every page flip, and the client XS…
namedgraph Sep 11, 2026
5225bbe
The view mode switcher stops keeping the mode it left behind. When th…
namedgraph Sep 11, 2026
78b9ad7
ldh:css-token stops calling a method on a map. ixsl:style() does not …
namedgraph Sep 11, 2026
665ed34
The view mode dropdown stops being clipped by the block it opens in. …
namedgraph Sep 11, 2026
cee626b
Facet filtering on a language-tagged value stops matching nothing, an…
namedgraph Sep 11, 2026
23ce1af
The dialog dismiss button starts closing dialogs again. f62cc3b1e str…
namedgraph Sep 11, 2026
0895fb5
The view grid stops offering an edit pin on its cards. The card emitt…
namedgraph Sep 11, 2026
d72b7af
The SPARQL editor fills the code field it mounts into. The design's C…
namedgraph Sep 11, 2026
3305741
An ontology-defined view renders as the block it is, and the row that…
namedgraph Sep 11, 2026
d12c0fc
ldh:timemap stops depending on its Link entry being the last one.
namedgraph Sep 11, 2026
ffc28c0
DRY audit of top-level XSL params and accessor functions (#382)
namedgraph Sep 12, 2026
7e925cf
A create command can say what the document is about. (#384)
namedgraph Sep 12, 2026
45517cb
Package stylesheets reach the client: compose and compile a SEF per i…
namedgraph Sep 12, 2026
ccdc1a0
Playwright UI suite: the harness (#381)
namedgraph Sep 12, 2026
aec09b6
Concept tree: a heading, and rows that link into ReadMode
namedgraph Sep 12, 2026
89206f7
ldh:tree-node-uri takes an empty href, and the spec says what a row l…
namedgraph Sep 12, 2026
28ee741
Drop-downs fit the side they open on, not just pick it
namedgraph Sep 12, 2026
5860114
The sign-up page's seed content leaves Bootstrap behind
namedgraph Sep 12, 2026
e19015b
The SEF compiler's response is not proxied content, and is not capped
namedgraph Sep 12, 2026
cf0f152
The drop marker draws inside the row, where the next block cannot cov…
namedgraph Sep 13, 2026
4c03ae6
The annotation dialog pins the statement and tabs the rest, and an ob…
namedgraph Sep 13, 2026
2d5cae3
An HTTP error tells the reader what the status means, and the error b…
namedgraph Sep 13, 2026
5ab5156
Static files say what encoding they are written in, and a suite keeps…
namedgraph Sep 13, 2026
c7757f8
A guard that cannot be evaluated is a guard that silently says no.
namedgraph Sep 13, 2026
1b0ad60
The preflight asks the page which stylesheet it runs, instead of chec…
namedgraph Sep 13, 2026
3a796df
The object switch answers the arrow keys its role promises.
namedgraph Sep 13, 2026
cf05cd5
A page is hydrated when Saxon-JS says so, not when the shell happens …
namedgraph Sep 13, 2026
688a975
A document's markup asserts the graph the same URL serves.
namedgraph Sep 13, 2026
285ff4f
A code field opens at the height a query gets written in, not the hei…
namedgraph Sep 13, 2026
aa5986d
A dialog hosting a view is the height that view fills.
namedgraph Sep 13, 2026
b26dc0d
An edit opened by mistake closes the way it opened.
namedgraph Sep 13, 2026
033ad7e
A press outside a block leaves an untouched form the way Cancel does.
namedgraph Sep 14, 2026
10eb9d3
An XMLLiteral is serialized once, together with the div it is stored in.
namedgraph Sep 14, 2026
92383eb
A package hides a row, not a statement, and a stylesheet may say what…
namedgraph Sep 14, 2026
8b9ff76
An assertion that matches the first line of a response stops racing t…
namedgraph Sep 14, 2026
424e135
The vendored editor is a copy again, and the integration is four para…
namedgraph Sep 14, 2026
cc3795b
A dialog's form actions stay where the eye expects them.
namedgraph Sep 14, 2026
f418486
A form's footer is the form's, and a card's foot belongs to a card.
namedgraph Sep 14, 2026
b7e96e6
A module says what it is made of before it says what it does.
namedgraph Sep 14, 2026
6726439
The bundled package is named for what it does, and its stylesheet for…
namedgraph Sep 14, 2026
45bfd06
Semantic markup carries the design system's dress on the element itself.
namedgraph Sep 14, 2026
db17da3
An alert in prose is separated from the prose around it.
namedgraph Sep 14, 2026
40141c7
The changelog records the long-form layer and the alert spacing fix.
namedgraph Sep 14, 2026
9e2e04f
A view's control header stops crowding the rows it describes.
namedgraph Sep 14, 2026
fc479e8
The design system lays out by the width it actually has.
namedgraph Sep 14, 2026
a84b1c3
A dragged RDF file lands where it is aimed, and the page says where t…
namedgraph Sep 14, 2026
00a7b05
The responsive spec asserts against components that are actually there.
namedgraph Sep 14, 2026
5d9225d
A facet answers, a pivot chip clears, and a chart axis reads as labels.
namedgraph Sep 15, 2026
a4b7c9a
A SPARQL result set is a document again, on both renderers.
namedgraph Sep 15, 2026
b2d46cb
A grid of results stays inside the block that frames it.
namedgraph Sep 15, 2026
7f4be59
A layout spec measures pixels, not permissions.
namedgraph Sep 15, 2026
6d93a96
The suite says what access it needs instead of inheriting it.
namedgraph Sep 15, 2026
a15ee9b
A tree told nothing about its children stops walking, and says nothing.
namedgraph Sep 15, 2026
4b17206
Two specs stop claiming they are about ownership.
namedgraph Sep 15, 2026
31980d6
Two more skips say why they skip, and the line between the suites is …
namedgraph Sep 15, 2026
fe219e8
A block move rewrites the sequence of the document it was dragged in,…
namedgraph Sep 15, 2026
272b949
An image in document content scales to its column instead of its own …
namedgraph Sep 16, 2026
4d11782
An image keeps the size the reader sees while the document is being e…
namedgraph Sep 16, 2026
3752246
A chart or view created from a query lands beside the query block ins…
namedgraph Sep 16, 2026
94f6e02
The access a block's affordances are gated on arrives as a value inst…
namedgraph Sep 16, 2026
d94431b
The endpoint a block reads its results from is handed to it, and the …
namedgraph Sep 16, 2026
937a215
A request that fails says so where it was made, and alert() is what i…
namedgraph Sep 16, 2026
0d959c8
A graph node's link goes where it points, in the page, instead of ope…
namedgraph Sep 16, 2026
a9d9e49
A package stylesheet outranks the open modes' fallbacks and nothing e…
namedgraph Sep 16, 2026
d45bafd
A video embed fills a recessed well instead of stranding a fixed 560p…
namedgraph Sep 16, 2026
4ed60f8
Navigation that cannot work degrades quietly; content keeps saying wh…
namedgraph Sep 16, 2026
36e52b4
A package described on this instance is read from its store, not fetc…
namedgraph Sep 17, 2026
15b5dbc
The sitemap reads the public read rules from the admin service itself…
namedgraph Sep 17, 2026
1c10562
Triplestores' outbound requests go through an egress proxy, with SPAR…
namedgraph Sep 17, 2026
cc092fb
Route the platform's own SPARQL SERVICE through the egress proxy (imp…
namedgraph Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
96 changes: 96 additions & 0 deletions .github/workflows/ui-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: UI-tests

# Separate from HTTP-tests rather than a second job in it. The two share a ~3.5 minute
# prelude (image build, CLI, certificates) out of a run that is mostly suite, and they pay
# it in parallel, so folding them together would serialise ~19 minutes to save ~4 of runner
# time. It would also couple a suite that snapshots and restores the whole dataset to one
# that owns the instance and reseeds it, and leave one red X to say which of the two broke.

on: push

jobs:
ui-tests:
name: Build Docker image and run the browser UI suite against it
runs-on: ubuntu-latest
env:
# As http-tests/run.sh exports them, so both suites can be pointed at one instance
END_USER_BASE_URL: https://localhost:4443/
ADMIN_BASE_URL: https://admin.localhost:4443/
steps:
- name: Set up Java 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Checkout code
uses: actions/checkout@v7
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
cache-dependency-path: ui-tests/package-lock.json
- name: Add bin/ and its subdirectories to PATH
run: |
find "$GITHUB_WORKSPACE/bin" -type d >> "$GITHUB_PATH"
- name: Build the ldh CLI
run: mvn -B package # the suite builds its fixtures with ldh, the way http-tests does
working-directory: cli
- name: Add the ldh launcher to PATH
run: echo "$GITHUB_WORKSPACE/cli/bin" >> "$GITHUB_PATH"
- name: Generating server certificate
run: |
server-cert-gen.sh .env nginx ssl
working-directory: http-tests
- name: Writing secrets to files
# All three, not just the owner's: the base compose file declares each of them as a
# secret, and `up` fails outright on a missing source file.
run: |
mkdir -p ./secrets
printf "%s" "${{ secrets.HTTP_TEST_OWNER_CERT_PASSWORD }}" > ./secrets/owner_cert_password.txt
printf "%s" "${{ secrets.HTTP_TEST_SECRETARY_CERT_PASSWORD }}" > ./secrets/secretary_cert_password.txt
printf "%s" "${{ secrets.HTTP_TEST_SECRETARY_CERT_PASSWORD }}" > ./secrets/client_truststore_password.txt
shell: bash
- name: Build Docker image & Run Docker containers
# No service list: the sef-compiler container has to be up, because importing a
# package recomposes the client SEF and the suite's taxonomy fixture imports one.
run: docker compose -f docker-compose.yml -f ./http-tests/docker-compose.http-tests.yml --env-file ./http-tests/.env up --build -d
- name: Wait for the server to start...
run: while ! (status=$(curl -k -s -w "%{http_code}\n" https://localhost:4443 -o /dev/null) && echo "$status" && echo "$status" | grep "403") ; do sleep 1 ; done # wait for the webapp to start (returns 403 by default)
- name: Fix certificate permissions on the host
# The entrypoint generates the keystore inside the mounted volume as root, and
# Playwright reads it as the runner user.
run: |
sudo chmod 644 ./ssl/owner/keystore.p12
working-directory: http-tests
- name: Install the Playwright runner and its browser
run: npm ci && npx playwright install --with-deps chromium
working-directory: ui-tests
- name: Run the UI test suite
run: npx playwright test
working-directory: ui-tests
env:
# The keystore the http-tests stack generates, rather than the repository root
# copy the dev loop uses. OWNER_CERT_PWD keeps the password out of a file the
# suite would have to be told about separately.
OWNER_CERT_KEYSTORE: ${{ github.workspace }}/http-tests/ssl/owner/keystore.p12
OWNER_CERT_PWD: ${{ secrets.HTTP_TEST_OWNER_CERT_PASSWORD }}
- name: Upload the HTML report and traces
if: always() && hashFiles('ui-tests/out/**', 'ui-tests/test-results/**') != ''
uses: actions/upload-artifact@v4
with:
name: ui-test-results
path: |
ui-tests/out/
ui-tests/test-results/
if-no-files-found: ignore
- name: Dump container logs on failure
if: failure()
run: docker compose --env-file ./http-tests/.env logs --no-color
- name: Dump Tomcat logs from linkeddatahub container on failure
if: failure()
run: docker compose --env-file ./http-tests/.env exec -T linkeddatahub sh -c 'for f in /usr/local/tomcat/logs/*; do echo "=== $f ==="; cat "$f"; done' || true
- name: Stop Docker containers and remove volumes
run: docker compose --env-file ./http-tests/.env down -v
- name: Remove Docker containers
run: docker compose --env-file ./http-tests/.env rm -f
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
/target
/.env
/uploads
/sef
/nb-configuration.xml
/node
/node_modules
Expand All @@ -16,3 +17,6 @@
/fuseki
.claude/scheduled_tasks.lock
/cli/target
/ui-tests/node_modules
/ui-tests/out
/ui-tests/test-results
Loading
Loading