Commit Graph
43 Commits
Author SHA1 Message Date
Afonsop 369e2c8b5a fix: close the review findings on the restore-all/deep-links/PWA wave
Two reviewers, no blockers, three majors — all fixed.

- The remembered-tab focus after a Restore-all batch fired at the
  message boundary, but the LAST restore's tab inserts one async round
  later (its OPFS recent-cache write precedes the insertion) and the
  insertion's own activation overwrote the selection. The focus flag
  now also consumes at the insertion point, so the batch focus holds
  in the common all-success case.
- The service worker cached ANY successful in-scope navigation under
  the shell key — a direct navigation to a font or JSON would be
  served as the app shell for every offline navigation until the next
  online visit. Only the scope root caches as the shell now.
- Local macOS builds broke: sha256sum does not exist there (shasum
  does) and BSD sed requires an explicit -i suffix. The wrapper picks
  the available hasher and uses a portable in-place edit.

Also: '/app/' gets its own web app manifest (the previous commit's
'installable' claim was true only of the marketing site, whose
start_url sits OUTSIDE the service worker's scope — an installed app
opened offline showed an error page). The README now states the
honest offline timing (assets captured on the second visit — the
first visit's preloads outrun the installing worker) and the
long-lived-window update behavior.
2026-09-18 17:08:27 +01:00
Afonsop 5f9b345ee6 feat: restore-all session recovery, ?file= deep links, offline PWA
Session recovery: more than one pending snapshot adds a 'Restore all'
button to the Recover Drawing modal — every snapshot goes through the
exact same guarded path as a single restore (deleted only after its
own open succeeds). The open-tab list and active tab persist to
localStorage on web (open/save/close) and the remembered tab is
re-selected once a restore batch settles; the modal notes how many
drawings the session had. Nothing is auto-opened.

Deep links: ?file=<url|name> opens a drawing at boot. http(s) URLs
must end in .dwg/.dxf and are fetched with the same streaming,
64 MB-capped, 8 s-deadline reader the remote images use, then go
through the guarded open queue; cross-origin opens announce the
origin first. Bare names resolve from the browser's recent storage,
with a hint when absent. Everything else (file:, javascript:, drive
letters, non-drawing tails) is refused with a console note.

Offline PWA: the app was installable (manifest) but downloaded its
55 MB bundle on every visit. A cache-first service worker now serves
the whole bundle from Cache Storage after one online visit —
navigations network-first so updates land, hashed assets
stale-while-revalidate, non-GET/cross-origin passthrough, old caches
cleaned on activate, and the waiting-worker update flow documented.
The build wrapper stamps the cache version from the bundle hash and
hard-fails if sw.js is missing or unstamped.

Also fixes a locale group mismatch on the DATALINK pick notice
(catalog said a display group that does not exist in the ftl
sources).
2026-09-18 16:27:12 +01:00
Afonsop 58d3789bcf fix: trust the probe for over-budget images; TIFF allowance; build wrapper
Review of the image wave (with empirical reproduction against the
vendored image 0.25) found the budget contract did not hold across
formats: the decoder's Limits reserve checks NATIVE bytes-per-pixel,
so a grayscale/RGB JPEG/PNG/BMP over the RGBA budget decoded anyway
and into_rgba8() then ballooned to up to 4x it — the tab death the
budgets exist to prevent. The probed dimensions already prove an
OverBudget image cannot fit, so it is now refused without decoding,
removing all dependence on per-decoder limit fidelity.

Conversely, image's TIFF codec stacks ~3x scratch buffers on top of
the reserve, so an in-budget TIFF (the flagship GIS scenario) was
refused with a self-contradictory note ('400 MB, over the 512 MB
limit'); the decoder allowance for TIFF is now 3x while tier math
stays on the real budget.

Also: the refusal message saturates instead of overflowing on crafted
headers, the image pick only matches the refusal note naming ITS file
(peek, not drain — other references' notes survive for their own
drains), and the Georgian Supplement range ends at U+2D2F (U+2D30.. is
Tifinagh, which ships no font).

Build tooling: the font files missing from dist was a trunk
finalize_dist failure (Windows file-lock during the dist wipe; staging
had them, the exit code was missed) — not a copy-dir skip; it did not
reproduce in two clean cycles. scripts/build-web.sh is now the
canonical wrapper (MSYS_NO_PATHCONV, trunk, font copy + byte
verification that hard-fails), wired into README, Trunk.toml, and the
Pages workflow.
2026-09-18 05:15:37 +01:00
Hakan Seven d66e89ca19 Complete application localization across all supported languages 2026-09-07 01:05:02 +03:00
Hakan Seven 9129c85f97 Add Greek README translation and language links 2026-09-05 14:52:45 +03:00
Hakan Seven cbb4015760 Remove MCP bundle distribution 2026-09-05 01:10:13 +03:00
Hakan Seven afbf826b0c Ship client-neutral MCP bundles 2026-09-04 23:58:39 +03:00
Hakan Seven 071e224d26 Add client-neutral native MCP control 2026-09-04 23:27:03 +03:00
Hakan Seven ffc9a6cc33 docs(readme): split project growth charts 2026-09-02 23:37:43 +03:00
Hakan Seven 7aa19f6869 docs: update workspace screenshot 2026-08-22 15:51:15 +03:00
Hakan Seven e9a3a357ee docs: update modeling screenshot 2026-08-22 15:47:52 +03:00
Hakan Seven cfbf3233be docs: add Bulgarian README 2026-08-22 13:17:00 +03:00
Hakan Seven 405da13a65 docs: move translations under docs/readme 2026-08-15 22:14:22 +03:00
Hakan Seven 2c08b92267 docs(readme): add localized guides 2026-08-14 12:00:33 +03:00
Hakan Seven 8dec848afb docs(readme): redesign project overview 2026-08-14 11:22:12 +03:00
Hakan Seven 844ae227ec Change OCS Web link to www.opencadstudio.com
Updated the OCS Web URL for browser access.
2026-08-14 01:09:47 +03:00
Hakan Seven 3d2848021f feat(readme): combine growth metrics 2026-08-13 21:48:47 +03:00
Hakan Seven 2c01692d63 feat: self-host star history 2026-08-04 12:42:04 +03:00
Hakan Seven 29be063665 Enhance README with star history chart
Added responsive star history chart to README.
2026-07-09 00:33:42 +03:00
Hakan SevenandClaude Opus 4.8 b2db939034 docs(readme): add release/downloads/stars badges and star-history chart (#320)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 18:28:55 +03:00
Hakan Seven 488d265683 Update README.md 2026-06-17 02:14:56 +03:00
Hakan Seven b6e25e17ec Update README.md 2026-06-17 01:48:56 +03:00
Hakan Seven a146795952 Update README.md 2026-06-17 01:26:31 +03:00
Hakan Seven 406dda0987 Update README.md 2026-06-17 01:19:34 +03:00
Hakan SevenandClaude Opus 4.8 6179182f45 docs: link the web (GitHub Pages) build + note its limitations
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 01:07:36 +03:00
Hakan SevenandClaude Opus 4.8 695c6536c4 docs+ci(macos): ad-hoc sign bundle, add Homebrew cask, clarify install
- release.yml: ad-hoc codesign the .app before packaging so a quarantined
  download avoids the "app is damaged" Gatekeeper verdict; emit the cask
  version + sha256 to the job summary each release for easy tap bumps.
- packaging/homebrew: Homebrew cask + tap/usage notes; install via
  --no-quarantine (the actual Gatekeeper bypass for an unsigned app).
- README: split macOS install into Homebrew and manual .dmg paths with
  the xattr / Settings "Open Anyway" fallbacks.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 12:45:58 +03:00
Hakan Seven addf4e3904 Update README.md 2026-06-03 10:03:48 +03:00
Hakan Seven 3ffbc33f13 Update README.md 2026-06-03 10:01:40 +03:00
Hakan Seven 60bb81b0af Update README.md 2026-06-03 09:58:07 +03:00
Hakan Seven 5ea996d5fe Replace screenshot in README.md
Updated image in README with a new screenshot.
2026-05-26 23:06:08 +03:00
Hakan SevenandClaude Opus 4.7 ecdb0cd0a0 chore(release): bump to 0.4.0
Fix repo URLs to canonical HakanSeven12/OpenCADStudio casing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 17:32:29 +03:00
Hakan SevenandClaude Opus 4.7 ef1f9a08d6 chore: rename H7CAD to Open CAD Studio
Joining the OpenAEC Foundation (open-aec.com). Crate/struct become
OpenCADStudio, user-facing strings use the spaced "Open CAD Studio"
form, repo URLs point to HakanSeven12/open-cad-studio. Logo (window
icon + assets/logo.svg) redrawn with OCS initials. Drop examples/
binaries — unused.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 17:16:15 +03:00
Hakan Seven e2bc8c29eb Replace old image with new screenshot
Updated the image in the README to a new screenshot.
2026-05-23 11:00:32 +03:00
Hakan SevenandClaude Opus 4.7 aea113e687 chore(release): drop Intel macOS build; arm64 only
The macos-13 / x86_64-apple-darwin matrix entry was failing in the
v0.3.5 run and we don't plan to ship Intel macOS binaries. Collapse
the macOS job to a single arm64 build on macos-14 (Apple Silicon),
removing the matrix and threading the target literally through the
build / .app / .dmg steps. README updates to match.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 21:31:19 +03:00
Hakan SevenandClaude Opus 4.7 9527509ea2 chore(release): drop flatpak, add macOS .dmg, hide Windows console
- .github/workflows/release.yml: remove the build-flatpak job; matrix-
  add macOS (arm64 + x86_64) that builds H7CAD.app by hand, renders
  .icns from assets/logo.svg via librsvg + iconutil, and packages a
  UDZO .dmg. AppImage path updated to packaging/H7CAD.desktop.
- packaging/H7CAD.desktop: moved out of flatpak/ so the AppImage job
  doesn't depend on a Flatpak layout.
- packaging/Info.plist: macOS bundle template; __VERSION__ swapped
  for the release tag at build time.
- flatpak/: deleted (manifests, metainfo, desktop, builder cache).
- src/main.rs: `#![cfg_attr(all(windows, not(debug_assertions)),
  windows_subsystem = "windows")]` so the Windows GUI binary no
  longer spawns a console window alongside it (debug builds keep
  the console for log output).
- README: add macOS install section, document Gatekeeper / SmartScreen
  on first launch since the binaries are unsigned.

Bump to 0.3.5.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 21:13:02 +03:00
Hakan Seven ef57a629c0 Update image in README.md 2026-05-12 22:26:34 +03:00
Hakan Seven 3fd346729a Replace old screenshot with new one
Updated the screenshot in the README file.
2026-05-03 21:45:46 +03:00
Hakan SevenandClaude Sonnet 4.6 59e7f6b832 docs: switch Linux install instructions from Flatpak to AppImage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 11:02:30 +03:00
Hakan SevenandClaude Sonnet 4.6 ce40e5092d docs: rewrite README to document all features added since initial release
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 10:59:41 +03:00
Hakan Seven d7f2f860a2 Update image link in README.md 2026-04-26 21:59:19 +03:00
Hakan Seven 55bac2a1cb Add README with installation and build instructions 2026-03-22 18:31:46 +03:00
Hakan Seven 4e0b2087b0 Update README with project image
Add an image to the README file.
2026-03-22 14:59:08 +03:00
Hakan Seven d52c6440ff Initial commit 2026-03-22 14:53:51 +03:00