Commit Graph
288 Commits
Author SHA1 Message Date
Zef Hemel d7cc6532e6 Filter hidden files and folders, as well as files without extensions
from FetchFileList

Add tests for hidden file and extension filtering in FetchFileList
2025-09-30 10:47:42 +02:00
Zef Hemel 7973a3a3c3 Enable GZIP HTTP compression for sensible content types 2025-09-29 15:49:09 +02:00
Zef Hemel 283cd4224d Fixes #1567 2025-09-26 13:55:59 +02:00
Zef Hemel beede63362 Check SB_USER format 2025-09-26 08:03:24 +02:00
Zef Hemel 61fbcb05b5 * Change timestamp back to seconds since the epoch, not milliseconds (waste of space)
* Tweaked cache headers for file listing
2025-09-25 13:07:16 +02:00
Zef Hemel dd9e4582dd Move built client files to client_bundle folder to make embedding them into the server binary cleaner. 2025-09-25 09:51:05 +02:00
Zef Hemel ee3896ee75 Further code restructuring and fix detection of space path change 2025-09-24 12:57:56 +02:00
Zef Hemel fe7956aa83 Block writes operations in read-only mode on the server 2025-09-23 08:19:29 +02:00
Zef Hemel 56b0fb164b Fixes #1560
* Adds back auto creation of index page and CONFIG page if they don't
  exist.
* Remove observe argument on backend
2025-09-22 16:48:42 +02:00
Zef Hemel d2277c376c Fixes #1559 2025-09-22 15:57:26 +02:00
Zef Hemel be5ea19f1c Add missing files... 2025-09-19 16:11:49 +02:00
Zef Hemel fdd8899b33 Fix SB_URL_PREFIX handling, added SB_LOG_PUSH to ask clients to push
client logs to the server
2025-09-19 16:10:14 +02:00
Zef Hemel 3e444ffb2a Replacing more fmt.Print with log.Print 2025-09-19 14:37:31 +02:00
Zef Hemel 1541d13834 Fix backend not setting mtime anymore (resulting in reloads and
potential conflicts)
2025-09-19 14:30:31 +02:00
Zef Hemel cd2b712fec Fix host binding 2025-09-19 13:37:20 +02:00
Zef HemelandGitHub a524c64884 Go backend (#1555)
* Replaces old Deno server with a Go implementation
* Restructured the code base accordingly
2025-09-19 13:23:20 +02:00
Zef HemelandGitHub dc2987a3f9 Sync engine rearchitecture (#1516)
* Don't require auth for .ping
* Finally introducing loggers
* Remove file list caching from disk_space_primitives
I don't think this is required anymore with the sync model
* Simplification of space primitives and more tests
* More reliable online status
* Add .zed settings
* Remove selfUpdate argument from `writeFile` no longer used
- Add `sync` config schema and document sync options
- Move sync config handling to client boot logic
- Move BootConfig type to ui_types.ts
- Remove sync env vars from server
- Update documentation for sync and architecture
* Improve sync logic and proxy routing for full sync state
* Add BoxProxy for late-bound client and improve Lua boot
- Add isMobile syscall for editor
* Add concurrency to sync process and log indexing duration
* Better service worker lifecycle management
2025-09-12 14:43:57 +02:00
Zef Hemel a4df713711 Don't require auth for .ping 2025-09-01 15:38:30 +02:00
Zef Hemel c74e878897 Shell command whitelisting and stdin support 2025-08-27 11:14:21 +02:00
Zef HemelandGitHub fe5dc80a14 Expose file system API on /.fs instead of root (#1507)
Fixes #1506
2025-08-27 09:58:11 +02:00
aa0b95b31d The one about refs (#1496)
* [Major] Introduce a new `Ref` and `Path` type

This introduces a new `Ref` and `Path` type, which try to be as lightweight and rigorous as possible. More description in the PR

* [Minor] Updated Syntax

* [Minor] Updated Type

* [Minor] Renamed file

* [Minor] Updated type

* [Minor] Updated Syntax

* [Major] Rename css classes for wiki links

Previously all the parts of a wiki link were tagged with `sb-wiki-link-page`. This didn't make a whole lot of sense. Also the tag `sb-wiki-link` was could never render, because of the way `HighlightStyle` works. Now every part of a wiki link will be tagged with `sb-wiki-link` (i.e. the link, the alias, the dimensions). Invalid and missing links will be styled separately in a later commit.

* [Minor] Adjust to new API

* [Minor] Small changes

* [Minor] Function and file renames

* [Major] Syscall adjusments

Change behavior of `getCurrentPath` to actually return what's now considered a `Path`. `getCurrentPage(Meta)` now also correctly returns for documents. We could consider a rename to get rid of the `page` association

* [Major] Rework `Client`

Mostly minor adjustments for the new API. Some major changes in `navigateWithinPage` and some unecessary checks removed now

* [Major] Errors on navigate

This now throws an error when the user tries to navigate to a link that is invalid

* [Major] Minor adjustments and remove some old bulk

This does the typicall adjustments to the new API. A thing to consider is that invalid links aren't indexed. Also removed old code about template and query stuff. And reused a regex instead of copy pasting it.

* [Minor] Cleanup editor ui

* [Minor] Adjust to new API

* [Minor] Adjust to new API and reduce ugly regex

* [Minor] New API

* [Minor] Rework link cm plugin

* [Major] Rework wiki links

A lot of code cleanup, reworked for new APIs and also introduces "invalid links"

* [Minor] Part of the editor ui rework

* [Major] Adjust to new API

This also removes the `looksLikePathWithExtension` check. I don't think it was necessary.

* [Minor] PArt of editor ui rewrite

* [Minor] Adjust to new API

* [Major] Adjust renderer to new API

Invalid links now link to `#`

* [Major] Rewrite navigator

This still needs major rework, currently in a "got it working" state

* [Minor] Adjust file name

* [Minor] Mistake during rebase

* [Minor] Navigate to end of header

* [Minor] Remove `tweakEditorDOM` and use proper CM extensions

* [Major] Heavily clean up the navigation code

* [Minor] Make `PageNavigator` closable again

* [Minor] Small fixes to reduce errors bubbling up

* [Minor] Show error message if navigate fails

* [Major] Remove legacy `navigate({ kind = ` syntax

This removes the old navigation syntax. It's still supported but the user will be warned then using it. I also added some validation to editor.navigate for user provided refs.

* [Minor] Make notifications errors

* [Minor] Don't fail if header isn't found

* [Minor] Typo

* [Major] Remove cleanPageRef

* [Minor] Small bug

* [Minor] Align behavior between render and editor

* [Major] Remove `PageRef`. Pretty sure it's obsolete

* [Major] Remove pos from header as it's an invalid ref

* [Minor] Align with original behavior

* [Minor] Get tests working again

* [Minor] check that indexPage is valid

* [Major] Rewrite `resolve.ts` file

* [Minor] More tests, more fixes

* [Minor] Don't just append .md this is weird

* [Minor] More edge cases

* [Minor] Version bumping hono somehow fixes the `/` case

* [Minor] Smaller TODOs

* [Major] We can be a littler looser on the restrictions

* [Major] Change header indexing, to index with pos

* [Minor] More fixes for headers

* [Minor] Rename for clarity

* [Minor] Change more regexes to named groups

* [Major] Inline content rewrite

* [Minor] Fix TODO

* [Minor] Bump index version

* [Major] New Space Primitive to check paths

* [Minor] Fix #1214

* [Minor] Fix #1169

* [Minor] Remove TODO

This check is probably not needed anymore. Unsure. May look into it later

* [Minor] small bug

* [Minor] Not a good rebase without me needing to fix it afterwards

* [Minor] Improve fallback for file upload

* [Minor] Some fixes on the for resolving

* [Minor] Removed doubled test case

* [Minor] Resolve #860

* [Minor] Turn flash notification into an error

* [Minor] Change handling of `.` paths

* [Minor] Show empty URL for index page

* [Minor] Push correct ref to history

* [Major] Capture mini editor events in capture phase

This fixes the issue were when pressing arrowup or arrowdown changed the cursor position inside the editor

* [Major] Add prefix to `FilterList`

This now fixes issues were if you had a prefixed page you  con't properly search for it, because the search considered the prefix as part of the name

* [Minor] A little rigor for empty headers

* [Major] Fix #1404

* [Minor] `parseInt` returns `NaN` handle that

* [Minor] Use `fileName`

* [Minor] Fix comment

* [Minor] Fixes

* [Major] disallow `foo.png.md` and `/../`, etc. cases

* [Major] Change name of conflicted pages

* [Minor] Remove unecessary check

* [Minor] Remove some split code

* [Minor] Allow deletion of invalid files

* [Minor] Bug in the regex

* [Minor] Give some possibility of fixing incorrect names

* [Minor] Tiny bug with header completion

* [Major] Docs

* [Minor] Ignore errors for navigation inside of a page

This could be a problem when SB e.g. cached a scrollTop for a page, which, because e.g. the file is now deleted, doesn't exist anymore and thus CM throws an error, when trying to navigate

* Update conflicted copy regex in Maintenance.md

---------

Co-authored-by: Zef Hemel <zef@zef.me>
2025-08-24 16:16:19 +02:00
Zef Hemel b7e8d42195 Fixes #1469
Removing useless "Requested file" logs
2025-08-20 17:42:25 +02:00
Zef Hemel 90487746fd Fixes #669
Only renders page title in the HTML when running in unauthenticated & read-only mode
2025-08-20 11:47:03 +02:00
Zef Hemel 47284560ae Minor crypto cleanup, could fix #1128 2025-08-20 11:38:30 +02:00
Zef Hemel 33dead3f18 Only enable server-side rendering when:
1. No authentication is enabled
2. The server runs in SB_READ_ONLY mode
2025-06-18 18:28:52 +02:00
Zef Hemel 450ef50df7 Cleanup: more cleanup and moving stuff around 2025-06-17 16:12:18 +02:00
Zef Hemel 3d805383bb Cleanup: server 2025-06-17 13:48:56 +02:00
Zef Hemel e17d6b7bb7 Removed markdown plug with markdown preview 2025-06-17 11:11:59 +02:00
Zef Hemel c3672056fb Eliminate $lib 2025-06-16 18:53:21 +02:00
Zef Hemel 8d3dc4cc4e Refactor, cleanup 2025-06-12 20:30:01 +02:00
Zef Hemel 73c2cec5a0 Slight crypto cleanup 2025-06-10 12:36:37 +02:00
Zef Hemel ff741b8075 Refactor: Moved spaces/ to lib/ 2025-06-09 17:57:20 +02:00
+1 766fb96ff2 Adding support for hosting with URL prefix (#1357)
* Adding support for hosting with URL prefix to make reverse-proxy setup on sub-path possible

* Adjusting recent changes to auth.html (changing to relative URLs)  after rebasing from upstream

* Adjusting service_worker and application manifest to support URL-prefix

* Add notes on Space Lua Pattern Matching (#1366)

* Remove common/space_lua/stdlib/math.md (#1371)

* Escape pipe symbol in string.gsub (#1370)

* feat: configure vim in CONFIG (#1369)

* Fix week calculation (#1368)

* Add more tests for week calculation

* Fix week calculation

* Add more tests

* Implement Lua built-in function os.difftime (#1367)

* Implement Lua built-in function os.difftime

* Test os.difftime

---------

Co-authored-by: Zef Hemel <zef@zef.me>

* Fix index page naming during server initialization (#1365)

* Allow non-zero shell exit codes (#1377)

* Generate version from git describe at build time (#1374)

* Generate version from git describe at build time

* Add 2.0-beta prefix

* Use Deno.Command instead of Deno.run

* Add missing case to math.random and check arguments (#1372)

* Fix paragraphs for the tag page (#1376)

* Render a predefined string for empty markdown table instead of pipe characters (#1387)

* Fix string.find (#1390)

* Fetch tags and history for proper version string generation (#1388)

* Fix support for disabling shortcuts (#1393)

* Add GitHub Actions Cache to reduce build times (#1394)

* Order strings in queries using collation algorithm (#1391)

Configurable with queryCollation, default value maintains old behaviour.
Added tests, schema, example settings, and documentation to query page.

Close: #614
Close: #1316

* Utility function to handle empty query results and templates (#1386)

* Add global Lua function 'some'

Moved documentation for 'each' function to non-standard section.

* Revert "Add optional argument to template.each for empty collection output (#1359)"

This reverts commit b73dadec67.

* Reimplement #1359 using 'some' function

* Update Lua to event.listEvents to match plugos syscall (#1397)

The documentation, example, and other function names use
`event.listEvents`, but `event.list` is being registered with the
client.

* Update widget header to not overflow container (#1410)

Also add a 10px margin below the header to maintain consistent spacing
around the widget contents.

* fix: case insensitive admonitions by default (#1409)

* fix: closing bracket is missing (#1408)

* Add optional priority attribute to PageCreatingContent (#1392)

* Add optional priority attribute to PageCreatingContent

* Minor simplification

* Fix comments

* Revert changes

* Add pageEventHandlers

* Use UTC year, month, and date for strings lacking time components (#1403)

* feat: allow CONFIG.md in any directory (#1398)

* fix: bundle external dependencies (#1379)

* Deno bump

* Copy-edit splash screen text (#1413)

* Fixes #1401 by implementing Lua's select

* Fixes offline capability of PWA (I hope).

Now storing config in localStorage.

* fix lint

* Reduce blast radius of Lua errors

* Fixes #1411: adds 'priority' setting for space style

* Refactor: Merging common/ into web/

* Fixes #1400

* Improves #1312 by rendering Lua expressions (but not widgets)

* Fix minor typos, add configuration to the docs

---------

Co-authored-by: wbhouston <wmbhouston@gmail.com>
Co-authored-by: Lennart Ochel <lennart.ochel@outlook.com>
Co-authored-by: Matthias Benaets <89214559+MatthiasBenaets@users.noreply.github.com>
Co-authored-by: Zef Hemel <zef@zef.me>
Co-authored-by: Marek S. Łukasiewicz <marek@lukasiewicz.tech>
Co-authored-by: Ivan Alejandro <ivanalejandro0@gmail.com>
Co-authored-by: Albert-Jan de Vries <aj+github@albert-jandevries.nl>
Co-authored-by: Cole Stowell <121599022+costowell@users.noreply.github.com>
Co-authored-by: Jim Tittsler <jimt@onjapan.net>
2025-06-04 15:15:14 +02:00
Zef Hemel bf2e0cdb87 Refactor: Merging common/ into web/ 2025-06-04 14:01:59 +02:00
Matthias BenaetsandGitHub c23402ded6 feat: allow CONFIG.md in any directory (#1398) 2025-05-26 20:05:42 +02:00
Lennart OchelandGitHub 71ba757534 Fix index page naming during server initialization (#1365) 2025-05-04 20:54:25 +02:00
Zef Hemel a7191d540a Expose htmlEscape function for external use and integrate it into the HTTP server response handling to sanitize DESCRIPTION values. 2025-03-31 16:03:35 +02:00
Zef Hemel 453cb912d9 Refactor Lua built-in functions for improved type handling
- Updated `ipairsFunction` and `pairsFunction` to accept both `LuaTable` and array types, enhancing flexibility.
- Modified `eachFunction` to support arrays, ensuring consistent behavior across different data structures.
- Added type checks and adjusted key retrieval logic for better compatibility with JavaScript objects.
2025-03-30 15:03:57 +02:00
Zef Hemel f429e1f7b2 Attempt to address /.config auth issues 2025-03-29 19:20:11 +01:00
Zef Hemel 1703020a8a feat: Add logout option to client wipe functionality
- Add optional logout parameter to system.wipeClient

- Add new 'Clear Local Storage & Logout' command

- Update API to support logout parameter

- Clean up server code comments
2025-03-28 13:45:39 +01:00
Zef Hemel 96f299bf8a Shell streaming support (Lua) 2025-03-27 17:04:15 +01:00
Zef Hemel 706588cd56 Bringing in config and config docs 2025-03-26 17:46:35 +01:00
Zef Hemel 254d6e6379 Ripped out use of Deno KV and other unstable features 2025-03-24 20:21:17 +01:00
Zef Hemel ac5a839ea8 Moving some endpoints 2025-03-22 07:32:27 +01:00
Zef Hemel dbfc5995f3 More thorough removal of federation 2025-03-21 16:12:10 +01:00
Zef Hemel fa8f07a123 Kinda working 2025-03-21 16:12:10 +01:00
Zef Hemel d50ddc2357 First very rough pass of cleanup 2025-03-21 16:12:07 +01:00
Zef Hemel ac5c0d676e Fix typecheck 2025-03-20 09:24:04 +01:00
stagandGitHub 66e4498159 Content-Type header in HTTP custom endpoint response handlers are now respected (#1300)
Before the commit, adding a Content-Type header in the reponse from the handler of a http:request:foobar event would be ignored and set to text/plain because of using ctx.text to return the request. ctx.text will set Content-Type to text/plain.

Now, if a Content-Type header is detected it will use a plain ctx.body response which does not alter Content-Type.
2025-03-20 09:19:53 +01:00
Zef Hemel 418138f9c9 Lint fixes 2025-03-14 10:37:30 +01:00