Commit Graph

3191 Commits

Author SHA1 Message Date
KernelDeimos ba994f8d88 refactor(backend): remove PuterFSProvider from core 2025-11-12 14:51:21 -05:00
KernelDeimos 8d4f788888 dev(puterfs): move misc methods to extension
The get_capabilities and update_thumbnail methods in PuterFSProvider are
moved to the extension by this commit. This is prerequisite to the
removal of PuterFSProvider in the core.
2025-11-12 14:51:21 -05:00
KernelDeimos 2285f8b553 clean: remove unused from old PuterFSProvider
Now that most of the functionality from PuterFSProvider in core has been
moved to PuterFSProvider in the `puterfs` extension, there are a lot of
unused symbols which need to be cleaned up.

This cleanup reveals that `update_thumbnail` and `get_capabilities` are
the only remaining functions left before PuterFSProvider in core can be
fully removed.
2025-11-12 14:51:21 -05:00
jelveh 6d5f1efce4 Add support for condition image models in Together AI 2025-11-11 20:30:24 -08:00
Nariman Jelveh 7b93d7c15b Add Mistral OCR support and imrpove img2txt API (#1957)
Introduces Mistral OCR integration in backend and updates the `AIInterfaceService` and `MistralAIService` to support new OCR options and response normalization. Updates metering cost map for OCR and annotation usage. Refactors `DriverService` to support interface-specific service aliases. Expands the puter.js `AI.img2txt` API to support flexible options and provider selection, including Mistral OCR.
2025-11-11 17:06:44 -08:00
KernelDeimos ea3dbcd411 dev(puterfs): move write_overwrite to extension 2025-11-11 15:32:03 -05:00
KernelDeimos a2cebf8c5b refactor(backend): migrate FileCacheService
FileCacheService was still a legacy service extending AdvancedBase. This
commit changes it to extend BaseService and implement the lifecycle
methods consistent with other services. This is a prerequisite for
moving write_overwrite which needs to import the service via
`extension.import` (not possible for legacy services) so that it may
invalidate file cache when a file is written to.
2025-11-11 15:32:03 -05:00
KernelDeimos bd81c533bc dev(puterfs): move write_new to extension 2025-11-11 15:32:03 -05:00
KernelDeimos 689fb91a0e dev(extensions): expose extension.errors API 2025-11-11 15:32:03 -05:00
Het Savani 2b8081d100 Fix: missing published/attached website icon for folder on different views (#1764) (#1945) 2025-11-10 22:28:10 -08:00
Neal Shah bb2c78ae2d Add failsafe incase max_tokens is 0 or negative for a model (#1954) 2025-11-09 19:22:34 -05:00
Neal Shah 3c3367ca52 Autodiscover ollama support (#1953) 2025-11-09 18:51:07 -05:00
Neal Shah 0077944bd4 Openrouter reasoning fixes (#1951)
* Fix for OpenRouter reasoning models
2025-11-09 15:33:36 -05:00
Hariz S. 7d78381fe1 Re-add direct download via URL parameter (#1914)
* Re-add direct download via URL parameter

* Add comments

* Confirm before downloading remote file

* Allow aborting remote downloads

* Preemptively add AbortController to fetch call
puter.net.fetch currently doesn't support it (yet!)

* Add filename to download dialog/progress dialogs
2025-11-07 23:32:06 -08:00
KernelDeimos 54310ad0ab chore: remove rollup, always use webpack
These two issues have affected us, but go away without rollup:
- https://github.com/npm/cli/issues/4828
- https://github.com/rollup/rollup/issues/6168

We can just use webpack instead; it has never caused build/npm issues.
This migration was done using AI, by pasting error messages over and
over again until everything worked. Since we're not actively working on
terminal and phoenix (dependents of rollup) currently it doesn't make
sense to focus on doing this migration manually, and any errors not
observed in basic use can be remedied later.
2025-11-07 17:17:54 -05:00
Daniel Salazar 7e21aad986 docs: prefix together ai model (#1939) 2025-11-07 12:23:56 -08:00
KernelDeimos e602e5f6cc ux(gui): use standard color picker in theme dialog 2025-11-06 18:05:59 -05:00
KernelDeimos 8c9dfb880f dev(puterfs): move readdir to extension 2025-11-06 17:14:09 -05:00
KernelDeimos 7988dc9adf dev(puterfs): move 'move' to extension 2025-11-06 17:14:09 -05:00
Daniel Salazar 5d1d5125ab performance: batch metering service usage increments when relevant (#1930) 2025-11-06 12:32:47 -08:00
Nariman Jelveh c21b0a1f6e Revert "feat: Settings and modal UI/UX improvements (#1828)" (#1931)
This reverts commit 191916321b.
2025-11-06 11:32:56 -08:00
Utku 191916321b feat: Settings and modal UI/UX improvements (#1828)
* feat: comprehensive settings and modal UI/UX improvements

Redesigned settings interface and modal windows with improved visual
hierarchy, spacing, and modern styling throughout the application.

Settings UI improvements:
- Enhanced section headers with proper flexbox layout and centering
- Simplified storage usage display to single percentage with clearer info
- Improved settings cards with consistent spacing and hover states
- Redesigned session manager with horizontal card layout
- Reordered account settings (username → email → password)
- Removed duplicate password option from security tab

Form and input improvements:
- Increased container padding (20px → 24px) for better breathing room
- Tightened label-to-input gap (8px → 6px) for better visual grouping
- Enhanced labels with bolder weight (500 → 600) and refined color
- Larger input fields (12px 14px padding) with smoother corners (6px)
- Added hover states with border color transitions
- Removed distracting box-shadow focus rings across all inputs/selects

Button improvements:
- Modernized primary buttons with solid colors (removed gradients)
- Added flexbox centering for consistent text alignment
- Reduced button text size (13px) for cleaner appearance
- Improved default button styling with refined gray palette
- Better active/hover state transitions

Select dropdown improvements:
- Custom SVG chevron arrow with proper 12px right spacing
- Fixed select resizing issue on focus (removed global border/padding override)
- Full-width selects in modals with consistent styling
- Smooth hover states without size changes

Modal windows:
- Consistent 380px width for form modals, 400px for desktop bg settings
- Unified .settings-form-container class across all modals
- Proper ARIA labels and semantic HTML structure
- Error/success messages with refined colors and better contrast

Desktop background settings:
- Color blocks increased to 32px for easier interaction
- Fixed focus outline clipping with proper overflow handling
- Removed scale effects for cleaner interactions
- Flexbox layout for color grid with proper spacing
- Fixed palette icon display with inline background image

Window chrome:
- Increased default shadow (0 12px 24px, 0.12 opacity)
- Enhanced active window shadow (0 16px 40px, 0.18 opacity)
- Better visual depth and window hierarchy

File organization:
- Moved UIWindowManageSessions to Settings folder
- Created helpers/build_settings_card.js for reusable components
- Updated all imports to reflect new structure

* bring back shadow

* improve 2fa + fix theme not changing on cancel bug + fix couple more issues

* style polish

* remove unused styles

* i18n

* fix search bar clipping

* group reset & customize color buttons

* more polish

* enforce min width/height on resizable

* resizable settings and show full name on hover

* style tweaks
2025-11-06 10:14:32 -08:00
Reynaldi Chernando 03860ab779 Add missing puter env enums (#1926) 2025-11-06 10:07:52 -08:00
KernelDeimos 117eda190f dev(puterfs): move copy_tree to extension 2025-11-05 20:09:58 -05:00
KernelDeimos 2b22406181 dev(puterfs): move stat to extension 2025-11-05 20:09:58 -05:00
KernelDeimos 6a2cac5d57 fix: incorrect implementation of ll_mkdir
When ll_mkdir functionality was moved to PuterFSProvider, ACL and FSLock
concerns were erroneously moved into PuterFSProvider. The intended
design has ll_mkdir responsible for ACL and FSLock, and providers should
never be responsible for ACL.
2025-11-05 20:09:58 -05:00
Daniel Salazar 045ef0a4e7 chore: type fixes (#1920) 2025-11-05 16:32:36 -08:00
KernelDeimos 1877a26c6b dev(puterfs): move mkdir to extension
An important note: it was noticed during this change that mkdir in
PuterFSProvider implements its own ACL check, instead of the ACL check
being performed in ll_mkdir. This means permissions won't be checked for
other implementors of mkdir! This needs to be fixed before custom
filesystem implementations can be considered production-ready.
2025-11-05 19:22:10 -05:00
KernelDeimos 33cba30124 clean(backend): process.exit(1) -> throw new Error 2025-11-05 19:22:10 -05:00
KernelDeimos acb9c4660c dev(puterfs): move quick_check to extension 2025-11-05 19:22:10 -05:00
KernelDeimos f2ad7ddfb5 dev(puterfs): move read to extension 2025-11-05 19:22:10 -05:00
Daniel Salazar 0fd7100795 fix: allow mysql json object response (#1918) 2025-11-05 15:22:46 -08:00
KernelDeimos 656a01f2fa fix: error calling .startsWith on null mime_type
According to the package documentation: https://www.npmjs.com/package/mime
> null is returned in cases where an extension is not detected or recognized

This call to `.startsWith()` was causing an exception to be thrown upon
right-clicking files without an extension, making it impossible to fix
them.
2025-11-05 18:13:15 -05:00
KernelDeimos 75073403f8 clean: remove rmnode and lint PuterFSProvider 2025-11-05 16:06:35 -05:00
KernelDeimos e8d9b7b35d dev(puterfs): move rmdir to extension 2025-11-05 16:06:35 -05:00
jelveh 3b3b9d0ee0 closes #1911 2025-11-05 07:58:20 -08:00
Nariman Jelveh cbbc4ce359 improve window snap logic to have delayed trigger 2025-11-04 21:44:10 -08:00
Daniel Salazar 490cd45336 fix: bad wrapper wrap (#1908) 2025-11-04 20:16:14 -08:00
KernelDeimos d7ea6769cb fix: check if system_prompts is an empty array
It was assumpted that `system_prompts[0]` could not be undefined which
is not accurate because sometimes there are no system prompts.
2025-11-04 22:32:57 -05:00
KernelDeimos a0ff03b13d dev: implement unlink in puterfs extension 2025-11-04 21:32:41 -05:00
KernelDeimos 24b1570007 refactor: make TraceService a proper service
This service was registered within FilesystemService for legacy reasons
but now it needs to be accessed by an extension. In order for the
extension import to work as expected this service needs to be registered
at the same phase as other services.
2025-11-04 21:32:41 -05:00
KernelDeimos e7357054b0 fix: undefined svc_fs
This fixes PD incident Q3ZNFWILVOFKU3. This issue was not caught in
testing - in fact after deleting a user the files were deleted as
expected, but it's unclear to me how I observed that with this issue
present.
2025-11-04 21:32:41 -05:00
KernelDeimos 4b959f3f4b dev: add proxy for PuterFSProvider
This temporary proxy provider will allow methods of the puterfs
filesystem type to be moved to an extension incrementally instead of all
at once. See comment above the class for a more detailed explanation.
2025-11-04 21:32:41 -05:00
Daniel Salazar 5ff8c7e040 feat: rawBody parser, user metadata column + other misc fixes (#1904) 2025-11-04 18:19:55 -08:00
KernelDeimos cc7369d9d7 fix: also check this.entry.id when checking mysql_id
There is a case where this.entry.id has a value in FSNodeContext while
this.mysql_id does not. I was under the impression that this state was
not possibole. The cause of this eludes me. This commit does not correct
the root cause - it only adds a workaround to this issue by falling back
to this.entry.id if this.mysql_id is `undefined`.
2025-11-04 21:05:16 -05:00
KernelDeimos a44e1fc074 fix: access internal ID without assuming fetch
It might not be okay to assume an fsentry was already fetched when
updating the accessed time in ll_read. I'd like to know what changed
this to make this be the case, if it happens to be the case.
2025-11-04 20:34:44 -05:00
KernelDeimos 19314d6496 sync: implement read in MemoryFS 2025-11-04 13:58:46 -05:00
KernelDeimos 875ecc051b clean: remove dead code from ll_write
The `_storage_upload` method in ll_write.js is no longer used, which
also means the LLWriteBase class is no longer necessary.
2025-11-04 13:58:46 -05:00
KernelDeimos d936fc47b0 dev: move read implementation to PuterFSProvider 2025-11-04 13:58:46 -05:00
KernelDeimos db8f45f386 fix: rm another ref to storage, rm dupe meter
There were two references to `storage` in file.js but the search string
I used only detected one of them. I was looking for more references to
`storage` when I found this one. Also, I realized the metering updates
in file.js become redundant if ll_read is used instead so I've removed
those as well.
2025-11-04 13:58:46 -05:00